string split,保证传递的字符串的顺序

2nbm6dog  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(364)

我陷入了一个问题,我需要确保字符串分裂,这将保证分裂字符串的顺序,它通过。示例:string=“a,b,c,d,e”
分割后的预期保证订单结果:请参阅所附图片的结果。
我看到许多ans会给我的字符串分裂,但正如我们所知,临时表不会保证字符串的顺序。我需要这两个sql 2012或更高版本,甲骨文10g应该是工作。

3qpi33ja

3qpi33ja1#

对于SQLServer和oracle,您找不到一个查询可以同时执行此操作,因为除其他许多原因外,它们的字符串解析函数具有不同的名称。
对于甲骨文来说,这个问题有很多解决方案;然而,它们大多不会在oracle10g上工作,因为它们依赖于11g或12c中引入的改进。这个答案应该能够适应[希望]使它在oracle10g中工作(但我没有地方测试它,因为oracle10g现在非常旧,您应该真的希望升级到一个更新的版本):

SELECT t.value,
       v.COLUMN_VALUE AS item
FROM   table_name t
       CROSS JOIN TABLE(
         CAST(
           MULTISET(
             SELECT REGEXP_SUBSTR( t.value, '[^,]+', 1, LEVEL )
             FROM   DUAL
             CONNECT BY REGEXP_SUBSTR( t.value, '[^,]+', 1, LEVEL ) IS NOT NULL
           )
           AS SYS.ODCIVARCHAR2LIST
         )
       ) v

对于样本数据:

CREATE TABLE TABLE_NAME ( value ) AS
SELECT 'a,b,c,d,e' FROM DUAL;

输出:
价值项目A、b、c、d、eaa、b、c、d、eba、b、c、d、eca、b、c、d、eda、b、c、d、ee
db<>在这里摆弄

相关问题