-2

MyTable.MyColumnとの値が の場合@MyVarNULL次のステートメントは何を返しますか?

ISNULL(@MyVar, MyTable.MyColumn)

4

4 に答える 4

10
create table MyTable
(
  MyColumn int
)

insert into MyTable default values

declare @MyVar int

select ISNULL(@MyVar, MyTable.MyColumn)
from MyTable

結果:

-----------
NULL
于 2013-03-19T09:41:25.430 に答える
6

他の人は何が起こるかを説明しています。これらの Null が不要な場合の解決策。

  • 式がリストにあり、結果に表示しSELECTたくない場合は、2 つ以上のパラメーターを取ることができる関数を使用できます。NULLCOALESCE()

    COALESCE(@MyVar, MyTable.MyColumn, another_value)
    
  • コメントで述べたように、状態にある場合:

    WHERE MyTable.MyColumn = ISNULL(@MyVar, MyTable.MyColumn)
    

    それを次のように置き換えることができます ( null かどうかに関係なく、null のTRUEときに条件を保持したい場合 ):@MyVarMyTable.MyColumn

    WHERE (MyTable.MyColumn = @MyVar OR @MyVar IS NULL)
    
于 2013-03-19T14:38:33.857 に答える
3

もちろん、NULL を返します。:) テストも非常に簡単です。これの全体的な必要性は何ですか?たとえば、少なくとも何らかの値が返されるようにする必要がある場合は、いくつかのオプションがあります。例:

SELECT CASE WHEN @MyVar IS NULL 
   THEN ISNULL(MyTable.MyColumn, 'replacementvalue') 
   ELSE @MyVar
END AS RESULT
FROM MyTable

ここで本当の問題についてもっと知る必要があります。

于 2013-03-19T09:44:41.103 に答える
1

これを試して :-)

select ISNULL(null,null) 
于 2013-03-19T14:07:32.663 に答える