可以用正则表达式帮助我吗?
我想检查在给定字符串中是否存在','。
literal:First_Name +; Last_Name + John,Smith
这里我想检查Last_Name是否包含','
select case when regexp_instr('First_Name+;Last_Name+John, Smith;Home_Adress+Michigan',
'^(.*?\;|\+)*Last_Name\+(.*\,).*$', ',') > 1
then 'ok' else 'nok' end as test1 from dual;
答案 0 :(得分:0)
regexp_instr()的第三个参数是一个可选的起始位置 - 只是省略它。
此外,由于你的正则表达式匹配整个字符串,检查regexp_instr()>是没有意义的。 1 - 如果你得到一个匹配,regexp_instr()将返回1,否则返回0。
with v_data as (
select 'First_Name+;Last_Name+John, Smith;Home_Adress+Michigan' as name from dual
union all
select 'First_Name+John;Last_Name+Smith;Home_Adress+Michigan' as name from dual
)
select
name,
regexp_instr(name, '^(.*?\;|\+)*Last_Name\+(.*\,).*$')
from v_data
答案 1 :(得分:0)
为什么在这里使用regexp?
case when
regexp_like(
'First_Name+;Last_Name+John, Smith;Home_Adress+Michigan',
'(^|;)Last_Name\+[^;]*,'
)
then 'present'
else 'not present'
end