SQL ISNULL 不起作用

Fro*_*nky 0 sql sql-server isnull case-when

我试图00001在查询结果为空但查询仍然返回空时显示。我不知道我的查询有什么问题。

编辑:

假设OBRNo123-5678-10-13-1619手段LEN(a.OBRNo) is 19

SELECT TOP 1 CASE WHEN RIGHT(a.OBRNo, 5) = NULL THEN '00001' ELSE a.OBRNo 
END as CaseWhen, 
ISNULL(a.OBRNo, '00001') as ISNULL,
RIGHT(OBRNo, 5) as OrderBy
FROM tbl_T_BMSCurrentControl as a
WHERE LEN(a.OBRNo) = 20 and a.ActionCode = 1
ORDER BY OrderBy DESC
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Tim*_*ter 5

与 比较NULLIS NULL/比较IS NOT NULL,而不是与 比较= NULL

SELECT TOP 1 CASE WHEN RIGHT(a.OBRNo, 5) IS NULL THEN '00001' ELSE a.OBRNo END
...
Run Code Online (Sandbox Code Playgroud)

您可以使用 来更改此行为SET ANSI_NULLS

默认情况下不能与 = 进行比较的原因是:NULL表示未定义。没有什么就等于未知,甚至不等于未知NULL。如果比较NULL结果未知,因此也NULL