SQL中有多个LIKE语句

时间:2013-12-27 19:08:30

标签: sql

我有一张包含零售店信息的表格。我有一个零售连锁店名称列表(WalMart,Target,Eatons等...)当用户选择一个时,我基本上运行一个查询来查找与该链有关的任何内容。

SELECT * FROM stores WHERE store_name LIKE '%$chain%' ORDER BY store_name ASC

例如,如果用户选择“WalMart”,则查询将返回名称中包含“WalMart”字样的任何内容(WalMart Scarborough,WalMart Supercenter Toronto,WalMart Distribution Center等)。

但现在我想让用户通过搜索文本框搜索此列表。我通常进行搜索的方式如下:

SELECT * FROM stores WHERE store_name LIKE '%$user_input%' ORDER BY store_name ASC

但在这种情况下,查询将返回包含user_input的所有商店,而不仅仅是WalMarts。如果我输入多伦多,我想看看多伦多的WalMart Supercenter,但当然会得到Target Toronto等....

如何制作它以便我正在寻找包含user_input但仅在WalMart子集中的任何内容。如果可能的话,我想在一个查询中执行此操作。我可以使用这样的两个LIKE语句吗?

很抱歉,还没有尝试过,因为我不确定从哪里开始。

5 个答案:

答案 0 :(得分:6)

是的,您可以执行以下操作:

SELECT * FROM stores WHERE store_name LIKE '%$user_input%' 
AND store_name LIKE '%Walmart%'
ORDER BY store_name ASC

答案 1 :(得分:1)

当然,你可以添加两个LIKE子句:

SELECT * FROM stores 
WHERE store_name LIKE '%$chain%' 
AND store_name LIKE '%$user_input%'
ORDER BY store_name ASC

答案 2 :(得分:1)

如果您希望将它限制在单个连锁店中,您可以这样:

SELECT * FROM stores WHERE store_name LIKE '%Walmart%' AND store_name LIKE '%$user_input%'      ORDER BY store_name ASC

答案 3 :(得分:0)

我认为这将有效:

   SELECT * FROM stores WHERE store_name LIKE '%$chain%' AND store_name LIKE '%$user_input%'  ORDER BY store_name ASC

答案 4 :(得分:0)

是的,可以,只需使用两个LIKE。我也会使用LOWER(在user_input上应用小写)以使查询大小写独立。

SELECT * FROM stores WHERE LOWER(store_name) LIKE '%$user_input%' 
AND LOWER(store_name) LIKE '%walmart%'
ORDER BY store_name ASC