оракул поиск слова в строке - PullRequest
1 голос
/ 13 июня 2010

Я хочу найти слово в строке в ORACLE, в котором строка разделена запятой. Например. Строка is ('MF1, MF2, MF3'), и теперь я хочу выяснить, существует ли в ней 'MF' или нет. Если я использую instr ('MF1, MF2, MF3', 'MF'), это даст неверный результат, так как я хочу искать Full MF в MF1 или MF2 или MF3.

Ответы [ 2 ]

1 голос
/ 14 июня 2010

Попробуйте ..

instr(','||'MF1,MF2,MF3'||',',',MF,')

или более обобщенно

instr(','||col||',' ,  ','||val||',')
0 голосов
/ 14 июня 2010

Если входящая строка всегда находится в этой форме:

('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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...