首页 > 解决方案 > SQL 连接 - 忽略空值 - 结果不应包含空格

问题描述

我希望将四列连接成一个计算列。四列中的任何一列都可以有空值。生成的计算列应该没有空格 - 只是四个字段的组合。

我已经尝试了大约十几个选项,包括 coalesce、IFNULL 等。下面是我尝试过的一些代码的示例。

(CONCAT([Column1],[Column2],[Column3],[Column4]))

CONCAT((ISNULL, Column1, ''), (ISNULL, Column2, ''), (ISNULL, Column3, ''), (ISNULL, Column4, ''))

ISNULL(Column1, '') + ISNULL(Column2, '') + ISNULL(Column3, '')+ ISNULL(Column4, '')

CONCAT(((isnull([Column1],''), isnull([Column2],'')), isnull([Column3],'')), isnull([Column4],''))

CONCAT(COALESCE (Column1, N'') , COALESCE (Column2, N'') , COALESCE (Column3, N'') , COALESCE (Column4, N''))

这是一个数据样本和我想要的结果:

第 1 列 第 2 列 第 2 列 第 2 列 结果
XYZ 5 C XYZ5Bc
9 一个 UGH9a
8 G C 8GC
IJH ķ b IJHKb
KUJ 6 是的 KUJ6Y

标签: sqlconcatenation

解决方案


如今,许多数据库都支持非常方便的concat_ws()功能。有了它,您只需使用:

select concat_ws('', column1, column2, column3, column4)

如果值的开头或结尾有空格,您可以使用trim()

select concat_ws('', trim(column1), trim(column2), trim(column3), trim(column4))

如果您的数据库不支持concat_ws(),则有解决方法。但是,具体的解决方法取决于您使用的数据库。


推荐阅读