當查詢結果爲空但查詢仍然返回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