2011-12-08 13 views
0

我有一個分支列表,當沒有分支時,結果以短劃線形式返回。我試過在這樣做的情況下,像這樣:SQL報告在不匹配時返回短劃線

CASE Table.column 
WHEN '-' THEN 'Global' 
ELSE Table.column 
END 

這什麼都不做。我試過了:

CASE Table.column 
WHEN NULL THEN 'Global 
ELSE Table.column 
END 

這也沒做什麼。有什麼想法嗎?分支數據來自的表格中沒有行。

謝謝你們。

回答

1
CASE Table.column 
WHEN NULL THEN 'Global' 
ELSE Table.column 
END 

這意味着同

CASE 
WHEN Table.column = NULL THEN 'Global' 
ELSE Table.column 
END 

但TABLE.COLUMN永遠不會比等於NULL,因爲沒有什麼比等於NULL。使用IS NULL來代替:

CASE 
WHEN Table.column IS NULL THEN 'Global' 
ELSE Table.column 
END 

可短,如果你的數據庫支持的話:

COALESCE(Table.column, 'Global') 
+0

謝謝,這工作,但我有點困惑。我正在嘗試IS NULL並在'IS'部分獲得錯誤。這是我如何編碼我的:CASE Organisation.txtDescription WHEN是NULL THEN'Global' ELSE Organisation.txtDescription END – user1076439

+0

CASE有兩種可能的語法:CASE(value)WHEN(value1)THEN ... WHEN(value2)THEN ... ELSE ... END,或CASE WHEN(boolean1)THEN ... WHEN(boolean2)THEN ... ELSE ... END。第一種語法總是比較,如果使用=,如果你想要一個不同的比較(你在這裏做),你需要第二種語法,第二種語法在CASE和WHEN之間沒有任何東西。 – hvd

0
CASE WHEN Table.colmun = '-' THEN 'Global' ELSE Table.column END 
+0

這沒有工作,我得到一個語法錯誤。 – user1076439

+0

@ user1076439對不起,我忘了'結束'我推薦hvd的解決方案。它更精確。 –