首页 > 解决方案 > CONCAT 函数附加列值以将数据导出到 CSV 文件

问题描述

CONCAT 函数将为 NULL 值设置 '',但是当附加以逗号 (,) 分隔的列值时,它不会给出预期的结果。以下是示例查询

    CREATE TABLE DEST_TABLE (ExportData VARCHAR(MAX))
    
    CREATE TABLE SOURCE_TABLE (COLUMN_1 VARCHAR(10), COLUMN_2 VARCHAR(10), COLUMN_3 VARCHAR(10), COLUMN_4 VARCHAR(10))
    
    INSERT INTO SOURCE_TABLE (COLUMN_1, COLUMN_2, COLUMN_3, COLUMN_4)
    VALUES ('COLUMN1', 'COLUMN2', 'COLUMN3', 'COLUMN4'), 
    (NULL, 'COLUMN2', 'COLUMN3', 'COLUMN4'), ('COLUMN1', NULL, 'COLUMN3', 'COLUMN4'), 
    ('COLUMN1', 'COLUMN2', NULL, 'COLUMN4'), ('COLUMN1', 'COLUMN2', 'COLUMN3', NULL )
    
    INSERT INTO DEST_TABLE (ExportData)
    SELECT CONCAT (COLUMN_1, + ',' + COLUMN_2, + ',' + COLUMN_3, + ',' + COLUMN_4) FROM SOURCE_TABLE
    
    SELECT ExportData FROM DEST_TABLE

输出为
COLUMN1,COLUMN2,COLUMN3,COLUMN4 -- 正确
,COLUMN2,COLUMN3,COLUMN4 -- 正确
COLUMN1,COLUMN3,COLUMN4 --错误
COLUMN1,COLUMN2,COLUMN4 --错误
COLUMN1, COLUMN2,COLUMN3 -- 正确

预期的输出应该是
COLUMN1,COLUMN2,COLUMN3,COLUMN4
,COLUMN2,COLUMN3,COLUMN4
COLUMN1,,COLUMN3,COLUMN4 -- 额外的逗号添加了 b/w Column1 和 Column3
COLUMN1,COLUMN2,,COLUMN4 -- 额外的逗号添加了 b/w Column2和 Column4
COLUMN1,COLUMN2,COLUMN3

当列包含 NULL 值时,请帮我添加额外的逗号。

标签: tsqlsql-server-2012

解决方案


声明中的小改动SELECT解决了这个问题。删除加号(+)并在需要的地方添加逗号(,)。

SELECT CONCAT (COLUMN_1,',',COLUMN_2,',',COLUMN_3,',',COLUMN_4)

推荐阅读