我想在ORACLE中的字符串中搜索单词,其中字符串以逗号分隔。 例如。字符串是('MF1,MF2,MF3'),现在我想搜索是否存在'MF'。 如果我使用instr('MF1,MF2,MF3','MF'),它将给出错误的结果,因为我想在MF1或MF2或MF3中搜索Full MF。
答案 0 :(得分:1)
试试..
instr(','||'MF1,MF2,MF3'||',',',MF,')
或更一般地
instr(','||col||',' , ','||val||',')
答案 1 :(得分:0)
如果传入的字符串始终采用以下形式:
('X,Y,Z,...')
你可以做这样的事情 - 用逗号替换引号,然后搜索用逗号包围的标准:
DECLARE
in_str VARCHAR2(4000) := '(''MF1,MF2,MF3'')';
criterion VARCHAR2(100) := 'MF';
BEGIN
IF INSTR(REPLACE(in_str,'''',','), ',' || criterion || ',') > 0 THEN
dbms_output.put_line('found!');
END IF;
END;
所以上面会说“找到了!”适用于MF1
但不适用于MF
。