![](/img/trans.png)
[英]Oracle SQL - Listagg with Rtrim and Regexp - Duplicates still present
[英]Oracle RTRIM of a listagg issue
我有一個值列表,作為動態查詢的一部分,它為in
子句形成元組。
為此,我使用了listagg,在每個值上添加'),('1','
,然后使用rtrim
刪除最后一個值:
with r1 as
(
select 1 as id, 'XYZ1' as r_val
from dual
union all
select 2, 'ABC1'
from dual
)
select rtrim(listagg(r1.r_val,
'''),(''1'',''') within group (order by r1.r_val),
'''),(''1'',''' )
from r1
預期:
ABC1'),('1','XYZ1
但是,由於某種原因,如果r_val以1
結尾,則1
也將被修剪:
ABC1'),('1','XYZ
誰能對此有所啟示?
RTRIM()
的字符形成一個集合,而不是單個字符串。 因此,每個都被單獨對待(請參閱此處 )。
我根本看不出為什么此查詢根本需要RTRIM()
。 listagg()
僅將分隔符字符串放在值之間 。
這應該做您想要的:
select listagg(r1.r_val,
'''),(''1'',''') within group (order by r1.r_val)
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.