次のSQLコードがあります
Declare
@var nvarchar(5)
begin
Set @var = ''
Select 1 where @var = nullif(@var, '');
End
これは結果を出力しません。NullIF が機能しないのはなぜですか?
次のSQLコードがあります
Declare
@var nvarchar(5)
begin
Set @var = ''
Select 1 where @var = nullif(@var, '');
End
これは結果を出力しません。NullIF が機能しないのはなぜですか?
使用するISNULL
Declare
@var nvarchar(5)
begin
Set @var = ''
Select 1 where @var = ISNULL(@var, '');
End
更新しました...
Declare
@var nvarchar(5)
begin
Set @var = ''
Select 1 where @var = @var OR @var = ''
End
あなたが残したコメントに基づいて、あなたの質問は少し誤解を招くものです.
次のステートメントが機能しない理由を実際に尋ねていると思います。
SELECT 1 WHERE NULLIF(@var, '') = null
これを機能させるには、次のようにします。
SET ANSI_NULLS ON
SELECT 1 WHERE NULLIF(@var, '') = null
ANSI_NULLS - ON の場合、等号演算子は機能せず、指定する必要がありますis null
。OFF の場合、null 値に対して equals 演算子を使用できます。
--
ANSI_NULL は将来の SQL Server バージョンでは常に ON になるため、これは問題に対するより良いアプローチです。
SELECT 1 WHERE ISNULL(@var, '') = ''
2 つの式が等しくない場合、NULLIF は最初の式を返します。式が等しい場合、returns a null value
最初の式の型の NULLIF。