繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM