2013-08-06 46 views
6

我有這樣的SQL,SQL Server中ISNULL的IsEmpty函數?

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 

我期待IsEmpty函數像ISNULL。所以我可以,

ISEMPTY(@SKU, NULL) 

這是SQL中可能的。

回答

35

嘗試NULLIF如下

NULLIF(@SKU,'') 
+2

我正在檢查空不爲空 – user960567

+4

這是正確的感謝 – user960567

+1

英文版上面的NULLIF頁面在這裏:http://technet.microsoft.com/en-gb/library /ms177562%28v=sql.105%29.aspx – GazB

1

這可能是你在找什麼:

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

編輯

對於所有的變量...

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

如果任何人使用我建議的代碼類型,忘記它,並使用NULLIF()作爲其他人建議。我完全忘記它存在。

+0

很多代碼,是否有一個簡單的函數avilable – user960567

6

使用SET @SKU = NULLIF(@SKU,'')設置@SKU爲空在那裏@SKU等於第二個參數的值。

IsEmpty不是內置的T-SQL函數,但可以使用NULLIF來實現類似的行爲。

5

請嘗試:

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

如果值爲NULL,空或太空返回NULL。

注意: NULLIF如果兩個表達式不等價,則返回第一個表達式。 如果表達式相同,則NULLIF返回第一個表達式類型的空值。

+2

不是IsNull(<世界中的任何值>,NULL)是多餘的? –

+0

是的...我們可以避免這種情況。 – TechDo

+0

可能看起來多餘,但它是標題中問題的答案。如果我們將括號中的NULL替換爲<任何其他值>,我們將得到一個功能完善的IsEmpty函數。這正是我所尋找的。以下代碼將空字符串更改爲錯誤消息:'ISNULL(NULLIF(@YourValue,''),'沒有輸入值')' – robotik