我不习惯使用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或其他框架)。
答案 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
替换为空字符串。