クエリ結果がnullでもクエリがnullを返す場合は00001
と表示しようとしています。私は私の質問に何が間違っているのか分からない。SQL ISNULLが機能しません
EDIT:
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
になります私はNULLの結果は 'WHERE LEN一致するか疑問(a.OBRNo)= 20' – devio'a.OBRNo'は空文字列ではないと最初に気になります。 – anatol
クエリはnullを返しません。何も返されません。 'isnull'は行が存在しない行を作成できません。 'len(a.OBRNo)= 20'でフィルタリングしているので、null値のa.OBRNo'値を返すことはできません。これは常にnull値に対して偽であり(そうでなくても、それはまだ確かに20ではないだろう:))。 ANSI SQLでNULLがどのように機能するかを調べることができます。正しいことを得ることは非常に重要です。 – Luaan