SQL Server 2005:在LIKE操作符中使用OR操作符

7
如何在SQL Server 2005中使用OR运算符与LIKE运算符?例如:
SELECT * 
  FROM table 
 WHERE column_name LIKE '%boo%' OR '%bar%' 

这似乎无法正常工作!

编辑1: 回复第一篇回答:

很棒,它能用!但我刚刚发现首次使用你的订单条件无法与like一起使用……请看下面的内容,我想问这是正常情况还是我的操作有误?

select * 
from <table> 
where col_name = 'VAL-QWE' 
      AND scenario like '%xxx%'
      OR scenario like '%yyy%'

如果您执行此查询,SQL Server根本不会关心col_name = 'VAL-QWE'条件,它只会查看like条件。
3个回答

17
select * 
from table where 
column_name like '%boo%' 
or column_name like '%bar%'  

您需要重复测试条件。在这种情况下,您需要在第二个条件的like子句中重复column_name

like或任何条件测试不会从上一个语句/测试中保留。


2
+1:尽管如此,利用全文搜索会表现更好。 - OMG Ponies
@OMGPonies 当然,我完全同意。 - user596075
谢谢您的回复,但请考虑重新阅读我的问题,我已经更新了它。谢谢。 - simranNarula

8
你在编辑问题时完全改变了问题的意思,这样做并不好!
在您修改后的示例中,“AND”在“OR”之前进行评估,因此您的sql正在执行以下操作:
select * from <table> where (col_name = 'VAL-QWE' AND scenario like '%xxx%') or scenario like '%yyy%'

但我认为你想要的是:
select * from <table> where col_name = 'VAL-QWE' AND (scenario like '%xxx%' or scenario like '%yyy%')

-1

简单明了,使用 sql 正则表达式:

select * from <table> where col_name = 'VAL-QWE' AND scenario REGEXP 'xxx|yyy';

目前 SQL Server 不支持 REGEXP 功能。 - Maxwell175

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接