gpt4 book ai didi

sql - 为什么 wm_concat 在这里不起作用?

转载 作者:行者123 更新时间:2023-12-03 15:18:12 25 4
gpt4 key购买 nike

我有这个查询:

(SELECT OBJECT_ID from cr_object_group_entries_vw where object_group_id IN
(SELECT ITEM FROM TABLE(CR_FN_SPLIT_STRING('28,56',','))))

返回:

enter image description here

但是当我这样做时:
SELECT wm_concat(object_id) FROM
(SELECT OBJECT_ID from cr_object_group_entries_vw where object_group_id IN
(SELECT ITEM FROM TABLE(CR_FN_SPLIT_STRING('28,56',','))))

我得到一个空白的结果......我做错了什么?

最佳答案

您必须避免 wm_concat函数,因为它没有记录并被发现作为 Oracle 8i 时代的解决方法。

自从 Tom Kyte 发现的带有自定义聚合函数的旧方法时代以来 here有一些新的解决方法,如下面的示例所示。

全部转载于this SQL Fiddle .

解决方法 1 - LISTAGG 函数,适用于 11g:

select listagg(object_id,',') within group (order by rownum) id_string
from cr_object_group_entries_vw

解决方法 2 - SYS_CONNECT_BY_PATH,从 10g 开始工作:
select id_string from (
select rn, substr(sys_connect_by_path(object_id, ','),2) id_string
from (select object_id, rownum rn from cr_object_group_entries_vw)
start with rn = 1
connect by prior rn + 1 = rn
order by rn desc
)
where rownum = 1

解决方法 3 - XMLAGG,从 10g 开始工作:
select replace(
replace(
replace(
xmlagg(xmlelement("x",object_id)).getStringVal(),
'</x><x>',
','
),
'<x>',
''
),
'</x>',
''
) id_string
from cr_object_group_entries_vw

附言我不知道确切的 Oracle 版本 sys_connect_by_pathxmlagg已引入,但两者都在 10.2.0.4.0 上运行良好

关于sql - 为什么 wm_concat 在这里不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16674927/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com