在MySQL逻辑子表达式中处理NULL的最佳方法

时间:2015-03-31 06:56:36

标签: mysql

我不习惯使用NULL而且我遇到了一些问题。例如,人们会认为此查询会返回所有客户:

SELECT * from customers WHERE ( job LIKE '%expert%' OR job NOT LIKE '%expert%' )

但实际情况是,它不会返回具有NULL作业的客户。

这就是一个例子。一个更真实的世界查询可能是:

SELECT * from customers WHERE NOT ( job LIKE '%expert%' )

为了正常工作,它可以重写为:

SELECT * from customers WHERE NOT ( job IS NOT NULL AND job LIKE '%expert%' )

在逻辑子表达式中处理此NULL的最佳方法是什么?我主要是一个用于小脚本的PHP程序员(我不习惯ORM或其他框架)。

2 个答案:

答案 0 :(得分:1)

您可以使用此查询获得正确的结果

SELECT * from customers WHERE NOT ( job LIKE '%expert%' ) OR job IS NULL

答案 1 :(得分:0)

我猜COALESCE()在大多数情况下非常方便。

我的最后一个例子可能是:

SELECT * from customers WHERE NOT ( COALESCE(job,'') LIKE '%expert%' )

如果恰好是job,它会将NULL替换为空字符串。