我有一个带有(国家,城市,地区,已发布)字段的桌子。我有一个搜索表单,有人可以进入国家或城市或地区。我希望得到所有已发布的房屋= 1,并且任何搜索字词都与其任何字段相匹配。
这是我到目前为止所做的:
SELECT * FROM homes
WHERE published = 1
AND
LOWER(country) LIKE '$search%'
OR
LOWER(city) LIKE '$search%'
OR
LOWER(area) LIKE '$search%'
问题在于它返回已发布= 0 ...
的房屋答案 0 :(得分:3)
我建议使用括号。
SELECT * FROM homes
WHERE published = 1
AND
(
LOWER(country) LIKE '$search%'
OR
LOWER(city) LIKE '$search%'
OR
LOWER(area) LIKE '$search%'
)
答案 1 :(得分:2)
SELECT *
FROM homes
WHERE published = 1
AND ( country LIKE '$search%'
OR city LIKE '$search%'
OR area LIKE '$search%' )
就像已经不区分大小写的东西一样,所以你不需要它。
默认字符集和排序规则是latin1和latin1_swedish_ci,因此非二进制字符串比较默认情况下不区分大小写。这意味着如果使用col_name LIKE'a%'进行搜索,则会获得以A或a开头的所有列值。 http://dev.mysql.com/doc/refman/5.0/en/case-sensitivity.html