[英]Best way to handle NULL in MySQL logical subexpressions
我不习惯使用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或其他框架)。
您可以使用此查询获得正确的结果
SELECT * from customers WHERE NOT ( job LIKE '%expert%' ) OR job IS NULL
我猜在大多数情况下, COALESCE()
都很方便。
我的最后一个例子可能是:
SELECT * from customers WHERE NOT ( COALESCE(job,'') LIKE '%expert%' )
如果碰巧是NULL
它将用空字符串替换job
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.