我有这样的查询:
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并希望保留它。
提前致谢。
答案 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%'));
然而,它只是语法糖,并且它不应该是性能上的差异。