MySQL 按 LIKE 和 AND 搜索

MySQL searching by LIKE and AND

我有这样的SQL查询

SELECT * FROM fl_entities WHERE  name LIKE '%FTSE%' AND source != 'ABC';

并没有得到结果。但是当我使用

 SELECT * FROM fl_entities WHERE  name LIKE '%FTSE%' AND source is NULL;

结果出来了

+----+----------+-----------+--------+--------+
| id | name     | core_name | type   | source |
+----+----------+-----------+--------+--------+
| 31 | FTSE     | FTSE      | factor | NULL   |
+----+----------+-----------+--------+--------+

第一个查询有什么问题?请帮忙。

当将一列与某个值进行比较时(即使是否定),null 值总是被排除在外。如果你希望它们出现在你的结果中,你需要明确指定,比如

SELECT * FROM fl_entities WHERE  name LIKE '%FTSE%' 
AND (source != 'ABC' OR source is null)

可以找到一个小演示 here

NULLS 不等于任何东西,因此您不能通过 = 或 != 比较它们,您必须使用 IS NULL 或 IS NOT NULL。