tsql - 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 值时,请帮我添加额外的逗号。
解决方案
声明中的小改动SELECT
解决了这个问题。删除加号(+)并在需要的地方添加逗号(,)。
SELECT CONCAT (COLUMN_1,',',COLUMN_2,',',COLUMN_3,',',COLUMN_4)
推荐阅读
- node.js - 开玩笑模拟 sendgrid 发送电子邮件
- c++ - 将使用 ExternalProject_Add 构建的库链接到使用 CMAKE_CXX_COMPILER 配置的项目时出错
- python - 在 Python 中读取原始以太网数据包的 VLAN 字段
- javascript - Gatsby Develop 失败:错误:找不到模块 'gatsby-cli/lib/reporter'
- excel - 是否可以使用 VBA 将 Excel 列表的部分上传到 SharePoint 列表?
- c++ - 重载可变长度模板函数的递归结束
- javascript - React - 渲染没有返回任何内容
- c# - 如何在列表中正确使用 LINQ 查询
创建字典 ,整数>? - android - Android - 只有调试和发布 buildTypes 的应用程序如何使用多风格库?
- scala - Scala:使用隐式参数反映类