我有一个CLOB类型的列,并包含逗号分隔值,如'1,2,13,14',我需要检查另一列(字符串)中的值是否可以匹配任何逗号分隔值CLOB。我该怎么做?
例如。找出3是否在'1,2,13,14'
中我尝试了InStr和regexp_instr,他们在试图查看3是否在'1,2,13,14'时都会找到匹配
请帮助!!
答案 0 :(得分:2)
您可以通过在您要检查的字符串的开头和结尾添加逗号,然后将其与,3,
进行比较来完成此操作:
with sample_data as (select '1,2,13,14' str from dual union all
select '11,22,3' str from dual union all
select '3,44,5' str from dual union all
select '19,3,394,49' str from dual union all
select '33,20' str from dual union all
select '3' str from dual union all
select '33,303' str from dual)
select str,
instr(','||str||',', ',3,') instr_3,
case when ','||str||',' like '%,3,%' then 'Y'
else 'N'
end is_3_present
from sample_data;
STR INSTR_3 IS_3_PRESENT
----------- ---------- ------------
1,2,13,14 0 N
11,22,3 7 Y
3,44,5 1 Y
19,3,394,49 4 Y
33,20 0 N
3 1 Y
33,303 0 N
我已经给你了几种不同的检查方式。