使用CONCAT LIKE AND的SQL查询

时间:2013-04-15 17:06:11

标签: sql concat sql-like

我有这样的查询:

SELECT * FROM `tbl_shop` 
WHERE
  (LOWER (CONCAT(address, name)) LIKE (LOWER ('%boston%')) AND
   LOWER (CONCAT(address, name)) LIKE (LOWER('%smoke%')));

我的问题很简单 - 有没有办法编写这段代码而不需要重复CONCAT(地址,名称)部分?

我试过

SELECT * FROM `tbl_shop`
WHERE 
  (LOWER (CONCAT(address, name)) LIKE (LOWER ('%boston%')) AND (LOWER('%smoke%')));

但这并没有给出任何结果。我只需要包含两个单词的所有结果。我不能使用全文,因为我正在使用inno db并希望保留它。

提前致谢。

1 个答案:

答案 0 :(得分:3)

你可以做到

SELECT b.* FROM
(
   SELECT a.*, LOWER(CONCAT(a.address, a.name)) AS field_to_check
)b 
WHERE b.field_to_check LIKE (LOWER ('%boston%')) 
 AND  b.field_to_check LIKE (LOWER('%smoke%'));

然而,它只是语法糖,并且它不应该是性能上的差异。