目前我正在 sql server 中运行以下查询。如何过滤谁checkpointstatus不是“已完成”(包括null值)。但问题是我无法获取那些值为空的记录。
SELECT * FROM TAMS.OrderDetail WHERE CheckPointStatus != 'Completed'
Run Code Online (Sandbox Code Playgroud)
我尝试通过以下方式解决此问题:
SELECT * FROM TAMS.OrderDetail WHERE coalesce(CheckPointStatus, '') != 'Completed'
Run Code Online (Sandbox Code Playgroud)
但只是想确定这是正确的方法吗?
尝试以下方法之一:
方法一。
SELECT * FROM TAMS.OrderDetail WHERE CheckPointStatus != 'Completed'
OR CheckPointStatus IS NULL
Run Code Online (Sandbox Code Playgroud)
方法2.(SQL Server 2008及以上版本)使用ISNULL函数。
SELECT * FROM TAMS.OrderDetail WHERE ISNULL(CheckPointStatus,'') != 'Completed'
Run Code Online (Sandbox Code Playgroud)
方法3.(SQL Server 2008及以上版本)使用COALESCE函数。
SELECT * FROM TAMS.OrderDetail WHERE COALESCE(CheckPointStatus, '') != 'Completed'
Run Code Online (Sandbox Code Playgroud)
第三个,其实是你自己查询的,是正确的