在TSQL

时间:2015-11-28 10:34:29

标签: sql-server tsql concatenation case

我正在尝试创建一个字符串,以插入到新表中的列中,该列是从另一个表中的多个列构建的。

举个例子:

Source table 
    Value_1 : '10'
    Value_2 : '30'
    Value_3 : '120';

Destination table
    Column A : '10,30,120,';

所以我的代码如下:

INSERT INTO DESTINATION TABLE
    Value_1 + ',' +
    Value_2 + ','+
    Value_3 +',';

这很有效。我的问题是,如果源表中的一列等于NULL,那么我的串联字符串结果为NULL。

Source table
    Value_1 : '10'
    Value_2 : NULL
    Value_3 : '120'

结果

Destination table
    Column A : NULL

如果源表中的一个值为NULL,我希望字符串的那一部分只有'0'作为值。

换句话说,我想要的输出是:

Column A : '10,0,120,';

有人能告诉我实现此目的的语法吗?

如果相关,我正在使用MSSQL server 2014。

1 个答案:

答案 0 :(得分:0)

原因是NULL + Anything = NULL,使用ISNULLCOALESCE函数替换0当值为{{1时}}

NULL