在Oracle过程中搜索多个文本字符串



我试图在存储过程中创建多个文本字符串的单个搜索。下面的代码适用于test1,但是当我同时尝试test1 &test2我没有得到结果;也没有错误。

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;

我做错了什么?

使用OR,因为如果使用AND,只有在找到两个字符串时才会得到正结果。也许你错过了上部(文本)也

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

也许没有一行同时包含"text1"one_answers"text2"字符串。在这种情况下,您必须使用OR。

SELECT NAME, LINE, TEXT 
FROM   USER_SOURCE
WHERE  TYPE = 'PROCEDURE' 
AND (UPPER(TEXT) LIKE UPPER('%TEST1%')
  OR UPPER(TEXT) LIKE UPPER('%TEST2%'))       

最后一行缺少UPPER(TEXT)。应该是:

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

最新更新