在 oracle table 中对多值列进行排序
sort multi value column in oracle table
我正在尝试对 oracle table 中的列进行排序。列值为 'M013,M007,M019,YYY,M018,XXX,999'。在将它与另一个已经排序数据的列进行比较之前,我试图对列中的值进行排序。我尝试了多个 hash/MD5 和其他几个选项,但没有帮助。
感谢您的帮助!!
你得到的是一个逗号分隔的随机元素字符串。正如您所指出的,listagg 函数可以对结果进行排序。我认为你最好的选择是将字符串解析为单个元素,然后让 listagg 用排序的元素重建字符串。 (参见 fiddle)
with test(str) as
( select 'M013,M007,M019,YYY,M018,XXX,999' from dual)
select listagg(estr,',') within group (order by estr)
from (select regexp_substr(str,'[^,]+', 1, level) estr
from test connect by regexp_substr(str, '[^,]+', 1, level) is not null
) ;
我正在尝试对 oracle table 中的列进行排序。列值为 'M013,M007,M019,YYY,M018,XXX,999'。在将它与另一个已经排序数据的列进行比较之前,我试图对列中的值进行排序。我尝试了多个 hash/MD5 和其他几个选项,但没有帮助。 感谢您的帮助!!
你得到的是一个逗号分隔的随机元素字符串。正如您所指出的,listagg 函数可以对结果进行排序。我认为你最好的选择是将字符串解析为单个元素,然后让 listagg 用排序的元素重建字符串。 (参见 fiddle)
with test(str) as
( select 'M013,M007,M019,YYY,M018,XXX,999' from dual)
select listagg(estr,',') within group (order by estr)
from (select regexp_substr(str,'[^,]+', 1, level) estr
from test connect by regexp_substr(str, '[^,]+', 1, level) is not null
) ;