MYSQL - 使用%%使用LIKE的SELECT查询返回不正确的值

时间:2009-10-02 18:33:33

标签: sql mysql

查询:

SELECT * FROM table
  WHERE fieldA LIKE '%%' 
  AND fieldB LIKE '%%' 
  AND fieldC LIKE '%%' 

仅返回已完成所有字段的记录。我的想法是它应该返回表中的所有记录。

'%%'实际上是否表示需要一个值?

UPDATE1:

感谢一些好的问题,找到了解决方案:

查询应该是:

SELECT * FROM table
  WHERE if(fieldA IS NOT NULL,fieldA LIKE '%%',fieldA IS NULL)
  ...

1 个答案:

答案 0 :(得分:10)

LIKE'%%'匹配任何字符串,即使是长度为零的字符串。您的查询结果是返回三个字段中包含字符串的所有行。

我的猜测是未完成的字段为NULL。也许你应该检查IS NOT NULL而不是LIKE'%%'?