2013-11-15 72 views
1

我有一個整合型項目中,我選擇列經常有這樣的代碼替換的東西:SQL Server查詢用於檢查空字符串並用其它

select 
CASE MyColumn 
    WHEN '' THEN '&' 
    ELSE MyColumn 
END 

有沒有更簡單的方法呢?有點像nulls合併? 我發現查詢真的很難閱讀等

感謝

+0

見 '接受',回答以下。實際上,我不需要保留空值,而最終的主要目標是簡化查詢,以便在不重複'MyColumn'的情況下閱讀更容易。 – Raymond

回答

1

我想你可以試一下像這樣...

COALESCE(NULLIF(MyColumn,''), '&') 
+1

這在功能上並不相同......原來的實現會保留一個NULL值,用''&'替換NULL。 –

+0

斑斑斑斑,ops @Vishal和我完全一樣的回答:) –

+0

我猜在這種情況下,CASE語句應該可以做這個工作。 –

1

你可以使用COALESCE,下面會檢查空和空字符串from here -

COALESCE(NULLIF(MyColumn,''), '&') 
+1

這在功能上並不相同......原來的實現會保留一個NULL值,用''&'替換NULL。 –

+0

的確如此,當時並沒有看到解決方案。 – Vishal

0

從@邁克爾Fredrickson的評論繼

NULLIF(COALESCE(NULLIF(COALESCE(MyColumn,'###'),''), '&'),'###') 

將###替換爲您知道不會出現在字段中的任何值。不知道它比案例陳述更容易閱讀。

0

這應該工作,並保持空值:

SELECT COALESCE(NULLIF(MyColumn, ''), NULLIF(MyColumn + '&', ''), MyColumn)