【发布时间】: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