CASE ステートメントで REGEXP_LIKE を使用したい
2つの質問
この CASE ステートメントで REGEXP_LIKE を機能させるにはどうすればよいですか? 次のエラー メッセージが表示されます
ORA-00904: "TRUE": invalid identifier
正規表現について、
select '12345678' from dual
クエリが返されるのはなぜ1
ですか?
正規表現ルール
0 ~ 6 桁、その後に 0 または 1 個の小数点、その後に 0 ~ 6 桁。
with expression_row as
(select 'zzzz' as expression from dual union all
select '12345678' as expression from dual union all
select '12.33333' as expression from dual union all
select '.222222' as expression from dual)
select
expression,
case regexp_like( expression, '^\d{0,6}(\.{0,1}\d{0,6})$')
-- [0-6 digits][0-1 decimal][0-6 digits]
when TRUE then 'Y'
else 'N'
end as valid_y_n
from expression_row;
望ましい出力
zzzz N
12345678 N
12.33333 Y
.222222 Y
このクエリを使用して正規表現パターンを検証しています。
select 1 as valid from dual
where regexp_like( '12345678', '^\d{0,6}\.{0,1}\d{0,6}$');