2013-11-15 40 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)