【发布时间】:2021-10-31 21:00:06
【问题描述】:
我有一个包含多个字符串列的表,我想用分隔符连接在一起。
| c1 | c2 | c3 | c4 |
|---|---|---|---|
| a | b | c | d |
| a | b | ||
| a |
结果应该是
'a-b-c-d'
'a-b'
'a'
在 SQL Server 中我只是这样做
select concat_ws('-', c1, c2, c3, c4) from my_table
在 Oracle 中我可以做到
SELECT COALESCE(c1, '') ||
CASE WHEN c2 IS NULL THEN '' ELSE '-' || c2 END ||
CASE WHEN c3 IS NULL THEN '' ELSE '-' || c3 END ||
CASE WHEN c4 IS NULL THEN '' ELSE '-' || c4 END
FROM my_table
在 Oracle 中是否有更好的解决方案,或者甚至适用于 SQL Server 和 Oracle 的解决方案?
【问题讨论】:
-
就两者而言,不幸的是,每种 SQL 方言都可能非常不同。例如,即使是 T-SQL 和 PL/SQL 中的基本连接也完全不同,它们分别使用
+和||。如果您使用多种方言,则很少有查询可以在不进行某种最小更改的情况下转移。
标签: sql string oracle concatenation