当查询结果为空但查询仍然返回null时,我试图显示00001
。我不知道我的查询有什么问题。SQL ISNULL不起作用
编辑:
假设OBRNo
是123-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
我不知道一个NULL结果匹配'WHERE LEN (a.OBRNo)= 20' – devio
我会首先确保'a.OBRNo'不是一个空字符串 – anatol
查询不返回null - 它不返回*任何*。 'isnull'不能创建没有的行。并且它永远不会返回任何空的'a.OBRNo'值,因为你用'len(a.OBRNo)= 20'来过滤,这对于一个空值将永远是虚假的(即使它不会,它仍然肯定不会是20 :))。您可能需要检查空值在ANSI SQL中的工作方式 - 正确的做法非常重要。 – Luaan