2013-08-06 6 views
6

IsEmpty関数はSQL ServerのISNULLのように機能しますか?私はこのSQLを持って

IF(@ID = '') 
BEGIN 
    SET @ID = NULL; 
END 

IF(@Name = '') 
BEGIN 
    SET @Name = NULL; 
END 

IF(@PhoneNumber = '') 
BEGIN 
    SET @PhoneNumber = NULL;  
END 

IF(@Price = '') 
BEGIN 
    SET @Price = NULL; 
END 

IF(@NewPrice = '') 
BEGIN 
    SET @NewPrice = NULL; 
END 

IF(@ModelNumber = '') 
BEGIN 
    SET @ModelNumber = NULL; 
END 

IF(@SKU = '') 
BEGIN 
    SET @SKU = NULL; 
END 

は私がISNULLのようなのisEmpty機能を探しています。私ができるように、

ISEMPTY(@SKU, NULL) 

これはSQLで可能ですか?

SELECT 
    @ID = CASE @ID WHEN '' THEN NULL ELSE @ID END, 
    @Name = CASE @Name WHEN '' THEN NULL ELSE @Name END, 
    @PhoneNumber = CASE @PhoneNumber WHEN '' THEN NULL ELSE @PhoneNumber END, 
    @Price = CASE @Price WHEN '' THEN NULL ELSE @Price END, 
    @NewPrice = CASE @NewPrice WHEN '' THEN NULL ELSE @NewPrice END, 
    @ModelNumber = CASE @ModelNumber WHEN '' THEN NULL ELSE @ModelNumber END, 
    @SKU = CASE @SKU WHEN '' THEN NULL ELSE @SKU END¸ 

EDIT2

をする場合...

SET @SKU = CASE @SKU WHEN '' THEN NULL ELSE @SKU END 

EDITすべての変数については

答えて

35

は@SKUは、第二引数の値に等しいnullに@SKUを設定するNULLIF

NULLIF(@SKU,'') 
+2

私は空でないことを確認しています – user960567

+4

これは正解です – user960567

+1

上記のNULLIFページの英語版http://technet.microsoft.com/en-gb/library /ms177562%28v=sql.105%29.aspx – GazB

1

これは、あなたが探しているものかもしれ誰もが私が提案したコードの種類、それを忘れて、他の人が示唆したようにNULLIF()を使用してください。私は完全にそれを忘れる。

+0

シンプルな機能がありますか? – user960567

6

使用SET @SKU = NULLIF(@SKU,'')以下のようにしてください。

IsEmptyは組み込みのT-SQL関数ではありませんが、同様の動作を実現するにはNULLIFを使用できます。

5

てみてください:値は、NULL、空またはスペースの場合はnullを返します

SET @YourValue=ISNULL(NULLIF(@YourValue,' '), NULL) 

を。

注: NULLIFは、2つの式が等しくない場合は最初の式を返します。 式が等しい場合、NULLIFは最初の式の型のNULL値を返します。

+2

はIsNullではありません(<ワールド内の任意の値>、NULL)。 –

+0

ええ...私たちはそれを避けることができます。 – TechDo

+0

は重複しているように見えるかもしれませんが、タイトルの質問に対する回答です。カッコ内のNULLを<その他の値>に置き換えると、完全に機能するIsEmpty関数が得られます。それはまさに私が探していたものです。次のコードは、空文字列をエラーメッセージに変更します。 'ISNULL(NULLIF(@YourValue、 '')、 '値が入力されていません')' – robotik

関連する問題