2013-05-31 2 views
0

Я пытаюсь создать единый поиск нескольких текстовых строк в хранимой процедуре. Следующий код работает для test1, но когда я пытаюсь выполнить тест test1 & test2, я не получаю никаких результатов; нет ошибок.Поиск нескольких текстовых строк в процедурах Oracle

Линия для test2 отмечена сейчас.

SELECT name, line, text 
FROM user_source 
WHERE type = 'PROCEDURE' 
AND UPPER(text) LIKE UPPER('%test1%') 
-- AND TEXT LIKE UPPER('%test2%') 
ORDER BY NAME; 

Что я делаю неправильно?

+1

Я думаю, вы имеете в виду ** ИЛИ ** –

ответ

0

Вам не хватает ВЕРХНИЙ (ТЕКСТ) на последней строке. Должно быть:

SELECT name, line, text 
FROM user_source 
WHERE type = 'PROCEDURE' 
AND UPPER(text) LIKE UPPER('%test1%') 
AND UPPER(TEXT) LIKE UPPER('%test2%') 
1

Используйте OR, потому что если вы используете AND вы будете только выйти Postive, если вы найдете обе строки. Может быть, вы пропустите верхний (текст) также

SELECT name, line, text 
FROM user_source 
WHERE type = 'PROCEDURE' 
AND UPPER(text) LIKE UPPER('%test1%') 
OR upper(TEXT) LIKE UPPER('%test2%') 
1

Возможно, это не линия как с «text1» и «text2» строк. В этом случае вам придется использовать OR.

SELECT NAME, LINE, TEXT 
FROM USER_SOURCE 
WHERE TYPE = 'PROCEDURE' 
AND (UPPER(TEXT) LIKE UPPER('%TEST1%') 
    OR UPPER(TEXT) LIKE UPPER('%TEST2%'))  
Смежные вопросы