在Oracle SQL中连接字符串?(WM-的concat)

Nic*_*ick 1 sql oracle concatenation

我有一些SQL,我想为mailout正确格式化(直接从SQL生成 - 不要问!).代码如下:

SELECT   wm_concat('<br>• ' || FIELD1 || ' ' || FIELD2 || ' : ' || FIELD 3 || ' text') AS "Team"
Run Code Online (Sandbox Code Playgroud)

好吧,所以这种方法有用 - 但它在每一行的末尾都放了一个逗号.愚蠢的问题,也可能是相当微不足道的,但是反正可以删除逗号吗?我认为它是由wm_concat函数添加的

谢谢

Ton*_*ews 7

是的WM_CONCAT函数在它连接的每个值之间加一个逗号.

如果您的数据中没有逗号,则可以执行以下操作:

SELECT replace (wm_concat('<br>• ' || FIELD1 || ' ' || FIELD2 || ' : ' 
                          || FIELD 3 || ' text'),
               ',', null) AS "Team"
Run Code Online (Sandbox Code Playgroud)

如果您使用的是11G,则可以使用新的LISTAGG功能:

SELECT LISTAGG ('<br>• ' || FIELD1 || ' ' || FIELD2 || ' : '
                || FIELD 3 || ' text')
         WITHIN GROUP (ORDER BY <something>) AS "Team"
Run Code Online (Sandbox Code Playgroud)

这将产生没有逗号的结果.


Dav*_*sta 5

只需修剪字符串尾随逗号:

RTRIM( wm_concat(...), ',' )
Run Code Online (Sandbox Code Playgroud)