【问题标题】:CONCAT function to append the column values to export data to CSV fileCONCAT 函数附加列值以将数据导出到 CSV 文件
【发布时间】:2021-01-22 12:16:44
【问题描述】:

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 -- 正确

预期的输出应该是
第 1 列、第 2 列、第 3 列、第 4 列
,COLUMN2,COLUMN3,COLUMN4
COLUMN1,,COLUMN3,COLUMN4 -- 在 Column1 和 Column3 中添加了额外的逗号
COLUMN1,COLUMN2,,COLUMN4 -- 在 Column2 和 Column4 中添加了额外的逗号
第 1 列,第 2 列,第 3 列

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

【问题讨论】:

  • 问题是'Literal String' + NULL = NULL,这就是你丢失逗号的原因。

标签: tsql sql-server-2012


【解决方案1】:

SELECT 语句中的小改动解决了这个问题。去掉加号(+),在需要的地方加逗号(,)。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-21
    • 2013-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-26
    • 2011-11-16
    相关资源
    最近更新 更多