【发布时间】:2011-09-14 22:00:09
【问题描述】:
我有我的 SQL,但是 WHERE 子句是我遇到的问题,因为使用运算符过滤掉记录似乎并没有过滤记录,而是在不应该的时候提取记录,我需要这个 LIKE/REGEXP 来提取记录,然后通过将 true 的记录包含到 = 语句中来缩小范围。
WHERE rec.street_name REGEXP '[[:<:]]united[[:>:]]'
OR rec.city REGEXP '[[:<:]]united[[:>:]]'
OR rec.state REGEXP '[[:<:]]united[[:>:]]'
OR rec.country REGEXP '[[:<:]]united[[:>:]]'
OR rec.street_name LIKE 'united'
OR rec.city LIKE 'united'
OR rec.state LIKE 'united'
OR rec.country LIKE 'united'
AND rec.ad_type = 1
AND ( rec.num_rooms >= 15 AND rec.num_rooms IS NOT NULL )
AND rec.visible_listing = 1
这个 WHERE 子句也不会过滤掉记录:
WHERE rec.street_name REGEXP '[[:<:]]united[[:>:]]'
OR rec.city REGEXP '[[:<:]]united[[:>:]]'
OR rec.state REGEXP '[[:<:]]united[[:>:]]'
OR rec.country REGEXP '[[:<:]]united[[:>:]]'
OR rec.street_name LIKE 'united'
OR rec.city LIKE 'united'
OR rec.state LIKE 'united'
OR rec.country LIKE 'united'
AND ( rec.ad_type = 1 AND ( rec.num_rooms >= 15 AND rec.num_rooms IS NOT NULL) AND rec.visible_listing = 1 )
即使将rec.num_rooms / rec.ad_type 更改为任何数字仍然不会改变任何内容。这是为什么呢?
【问题讨论】:
标签: mysql filtering where-clause