我有一個SQL查詢在SQL Server 2012上運行,需要比較一個比特值,如果該值爲1則返回一個字符串,如果爲零則返回一個空字符串。尋找替代凌亂的SQL ISNULL/NULLIF
我本來它作爲像這樣的CASE語句:
CASE WHEN myBit = 0 THEN
-- do other comparisons etc to build up the return string.
+'myString'
ELSE
-- do other comparisons etc to build up the return string.
'' END
的問題是,所有的代碼中「做其他」部分是相同的。我想要做的是追加一個字符串的返回值,如果該位是零,如果它是1沒有。
所以我重構它只有一次共同的代碼,然後追加到字符串的末尾這個:
-- do other comparisons etc to build up the return string. +
ISNULL(NULLIF(Cast(ISNULL(CAST(NULLIF(myBit, 0) AS NVARCHAR), 'myString') AS varchar),'0'),'')
但是,上面看起來很混亂,至少因爲CAST聲明是必需的。
我正在尋找乾淨整潔的做法,但已經用完了想法 - 任何人都有更好的方法來實現這個目標?謝謝。
請記住,CASE是一個函數/表達式,* not * a子句,因此您可以在使用ISNULL,NULLIF或任何其他函數的相同位置使用它。 – RBarryYoung 2013-02-08 17:43:10