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

时间:2013-05-31 19:06:39

标签: oracle

我正在尝试在存储过程中创建单个搜索多个文本字符串。以下代码适用于test1,但是当我尝试test1和amp; 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;

我做错了什么?

3 个答案:

答案 0 :(得分:1)

使用OR,因为如果您使用AND,只有找到两个字符串才会出现积极情况。也许你错过了鞋帮(文字)

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

答案 1 :(得分: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%'))       

答案 2 :(得分:0)

你在最后一行丢失了UPPER(TEXT)。应该是:

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