4

我有一个这样的查询:

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

我的问题很简单 - 有什么方法可以编写此代码而无需重复 CONCAT(address, name) 部分?

我试过

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

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

提前致谢。

4

1 回答 1

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%'));

但是,它只是语法糖,它不应该是性能上的差异。

于 2013-04-15T17:15:13.830 回答