我有麻烦与此select语句:如何在mysql select语句中使用OR LIKE?
Select * from table where row != '' and row2 like '%test%' or like '%test2%';
的“或类似的”部分不工作,我猜我使用它不正确。
我有麻烦与此select语句:如何在mysql select语句中使用OR LIKE?
Select * from table where row != '' and row2 like '%test%' or like '%test2%';
的“或类似的”部分不工作,我猜我使用它不正确。
你会做这样的事情:
SELECT * FROM table
WHERE row != '' AND (row2 like '%test%' OR row2 like '%test2%')
每个或/与在一件事情上进行操作。正如其他人所指出的那样,操作顺序很重要。您应该使用()
对表达式进行分组,以便首先对其进行评估。
谢谢vcsjones,作品 – Dave 2011-05-26 19:33:34
但他的问题有一个缺失的条件?我正在谈论'row!='''条件。 – RRStoyanov 2011-05-26 19:36:23
@RRStoyanov这只是一个如何在同一列上做两个喜欢的例子。我会更新答案以包含'row!='''条件。 – vcsjones 2011-05-26 19:38:29
Where子句与您正在查询的表中某行的列关联,而不是“行”本身。所以,如果处理一个简单的客户表,您可以应用之类的查询像
select
lastname,
firstname,
address
from
customers
where
firstname like 'Bill%'
OR lastname like '%mar%'
将返回其中第一个名字会专门与“条例”启动任何名字,无论是什么结尾(通过“% “通配符)
OR
姓氏的值为‘三月’中的最后名称的任何地方,如‘马库斯’,‘塔玛拉’,‘奥马尔’......
每个” LIKE “适用的条款是基于你有兴趣再次比较的专栏牛逼....如果你想为你每次都要写一列测试多个值...
where
firstname like 'Bill%'
or firstname like 'John%'
or firstname like '%any%'
你错过第二个像“2行”,而且您的查询像现在工作这样
Select * from table where row != '' and row2 like '%test%';
Select * from table where row2 like '%test2%';
如果你需要它这样的,这是确定的,但我想你想在这两个搜索行的!=“”?
如果是这样的话,比你的查询应该是这样的:
Select * from table where row != '' and (row2 like '%test%' or row2 like '%test2%');
通知括号。
有一个运算符优先级的问题 - 使用括号来解决这个问题:
SELECT *
FROM table
WHERE row != ''
AND (row2 LIKE '%test%' OR row2 LIKE '%test2%');
你也缺少在逻辑与的条件,第二个“2行”。
当然,示例中的第二个LIKE条件不会返回第一个没有的行(因为包含'test2'的每一行也包含'test'),但我们可以认为这是过度简化为了这个问题的目的。
嘿戴夫我编辑了你的问题的PHP和编程语言标签,因为它只是关于MySQL。 – yannis 2011-05-26 20:21:23