oracle在字符串中搜索单词

时间:2010-06-13 15:26:10

标签: sql oracle

我想在ORACLE中的字符串中搜索单词,其中字符串以逗号分隔。 例如。字符串是('MF1,MF2,MF3'),现在我想搜索是否存在'MF'。 如果我使用instr('MF1,MF2,MF3','MF'),它将给出错误的结果,因为我想在MF1或MF2或MF3中搜索Full MF。

2 个答案:

答案 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