连接不存在NULL的SQL字段

时间:2014-03-05 18:15:36

标签: sql-server-2008-r2

使用SQL Server 2008 R2

我试图阅读所有其他相关帖子,但没有看到任何与我想要做的相符。

我有两列Phone1和Phone1Ext`

我只想以Phone的格式将这些列连接为123-456-7890 x1234

我能做到

Select phone1 + ' x' + phone1ext AS Phone from table

并在Phone1Ext不为null时获得我需要的结果。但如果它是NULL我得到

123-456-7890 x

如果phone1为NULL,那么我只得到x

这完全是基于上面发布的SQL行所预期的。

如果phone1ext为NULL,我基本上不想连接phone1和phone1ext。我尝试了ISNULLCOALESCE的各种用法,但没有运气。

3 个答案:

答案 0 :(得分:1)

如果你只有phone1,你会得到它,如果两者都是null你会得到空字符串。

Select phone1 + ISNULL(' x' + phone1ext, '') AS Phone from table

答案 1 :(得分:0)

非常简单:

select
case when ph2 is not null 
then ph1 + 'x' + ph2
else ph1
end
from
ph

SQL Fiddle

答案 2 :(得分:0)

感谢你们两位的回复。我在发布之前尝试过对你的两个答案采用类似的解决方案,但总是去掉不需要的x。然后我有一个顿悟。我连接的数据是从另一个系统加载的。仔细观察后,放入的数据不是NULL值,而是“或”一系列空白。因此它们永远不会是空的!我为浪费你的时间而道歉,但是想发布这个以防万一其他人遇到类似的结果。这就是我以前用来解决它的问题:

选择   Len(phone1ext)< 1   那么Phone1   ELSE Phone1 +'x'+ phone1ext END AS Phone 从
  表

再次感谢。