2011-11-02 181 views
3

如何在SQL Server 2005中使用LIKE运算符和OR运算符?例如:SQL Server 2005:在LIKE运算符中使用OR运算符

SELECT * 
    FROM table 
WHERE column_name LIKE '%boo%' OR '%bar%' 

这似乎并不奏效!

编辑1:针对第一个答案发布时间:

酷,的作品!但我只是第一次发现您的订单条件不适用于...我想问的是这是正常还是我犯了一个错误?请查看下面来看看我的意思

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

如果执行此查询,SQL Server不为col_name = 'VAL-QWE'条件关心可言,它只是看起来在类似的条件?

回答

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

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

like或任何条件测试不会从先前的语句/测试持续。

+2

+1:借力[全文搜索](http://msdn.microsoft.com/en-us/library/ms142571.aspx)将执行的赌注尽管如此。 –

+0

@OMGPonies绝对,我完全同意。 – 2011-11-02 02:54:50

+0

感谢您的回复,但请考虑重新阅读我已更新的问题。谢谢。 – simranNarula

7

您完全通过编辑改变了问题的含义,而不是一件好事!

在修改后的示例中, '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%') 
0

平原和简单使用SQL正则表达式:

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