【发布时间】:2021-01-27 17:14:51
【问题描述】:
我想用 SQL Server 2016 或更早版本模拟 CONCAT_WS SQL Server 2017+ 函数,以便连接许多列,这些列的值是这样的字符串:
输入:
| COLUMN1 | COLUMN2 | COLUMN3 | COLUMN4 |
'A' 'B' NULL 'D'
NULL 'E' 'F' 'G'
NULL NULL NULL NULL
输出:
| MERGE |
'A|B|D'
'E|F|G'
NULL
请注意,输出结果是一个新列,它连接了由“|”分隔的所有值。如果列中没有值,则默认值应为 NULL。
我尝试使用 CONCAT 和具有许多 WHEN 条件的 CASE 语句,但确实很脏,我不允许使用此解决方案。提前致谢。
【问题讨论】:
-
您必须复制 CONCAT_WS 引入的条件逻辑,这将需要混乱的代码。凌乱的代码不必在您的查询中;例如,您可以将其隐藏在内联 TVF 中。但我想这也取决于谁说你“不允许”做事。
标签: sql sql-server sql-server-2016