0

次のSQLコードがあります

Declare
@var nvarchar(5)
begin
    Set @var = ''

    Select 1 where @var = nullif(@var, '');
End

これは結果を出力しません。NullIF が機能しないのはなぜですか?

4

3 に答える 3

2

使用する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
于 2013-05-25T07:17:23.233 に答える
1

あなたが残したコメントに基づいて、あなたの質問は少し誤解を招くものです.

次のステートメントが機能しない理由を実際に尋ねていると思います。

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, '') = ''
于 2013-05-25T07:32:52.963 に答える
0

2 つの式が等しくない場合、NULLIF は最初の式を返します。式が等しい場合、returns a null value最初の式の型の NULLIF。

ヌリフ

于 2013-05-25T07:16:54.957 に答える