2
我想在我的CASE語句中使用REGEXP_LIKE如何在CASE語句中使用REGEXP_LIKE?
2個問題
我怎樣才能REGEXP_LIKE在這個CASE語句工作? 我收到以下錯誤消息
ORA-00904: "TRUE": invalid identifier
重正則表達式時,爲什麼
select '12345678' from dual
查詢返回1
?
正則表達式規則
0至6位,接着爲0或1小數點,後面跟着0到六位數字。
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}$');
你的表達式與'12345678'中的'78'匹配,因爲你開始匹配'^'行首,'0-6'數字,然後查找十進制'0或1'時間,這是與使其成爲可選項例如'\。?',後跟'0-6'數字一樣。如果你不希望它匹配,則刪除'{0,1}'例如'^ \ d {0,6}(\。\ d {0,6})$' – hwnd