我想在我的 CASE 语句中使用 REGEXP_LIKE
2 个问题
如何让 REGEXP_LIKE 在这个 CASE 语句中工作?我收到以下错误消息
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}$');