2011-12-08 11 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的解决方案。它更精确。 –