• <tfoot id='1esoB'></tfoot>
      <bdo id='1esoB'></bdo><ul id='1esoB'></ul>
  • <small id='1esoB'></small><noframes id='1esoB'>

    <i id='1esoB'><tr id='1esoB'><dt id='1esoB'><q id='1esoB'><span id='1esoB'><b id='1esoB'><form id='1esoB'><ins id='1esoB'></ins><ul id='1esoB'></ul><sub id='1esoB'></sub></form><legend id='1esoB'></legend><bdo id='1esoB'><pre id='1esoB'><center id='1esoB'></center></pre></bdo></b><th id='1esoB'></th></span></q></dt></tr></i><div id='1esoB'><tfoot id='1esoB'></tfoot><dl id='1esoB'><fieldset id='1esoB'></fieldset></dl></div>

      <legend id='1esoB'><style id='1esoB'><dir id='1esoB'><q id='1esoB'></q></dir></style></legend>

      1. 通过 Oracle SQL 查询将行中的列的逗号分隔值拆分

        时间:2023-09-19

        <legend id='63bvP'><style id='63bvP'><dir id='63bvP'><q id='63bvP'></q></dir></style></legend>
        • <i id='63bvP'><tr id='63bvP'><dt id='63bvP'><q id='63bvP'><span id='63bvP'><b id='63bvP'><form id='63bvP'><ins id='63bvP'></ins><ul id='63bvP'></ul><sub id='63bvP'></sub></form><legend id='63bvP'></legend><bdo id='63bvP'><pre id='63bvP'><center id='63bvP'></center></pre></bdo></b><th id='63bvP'></th></span></q></dt></tr></i><div id='63bvP'><tfoot id='63bvP'></tfoot><dl id='63bvP'><fieldset id='63bvP'></fieldset></dl></div>
          • <bdo id='63bvP'></bdo><ul id='63bvP'></ul>

              • <tfoot id='63bvP'></tfoot>

                  <small id='63bvP'></small><noframes id='63bvP'>

                    <tbody id='63bvP'></tbody>

                  本文介绍了通过 Oracle SQL 查询将行中的列的逗号分隔值拆分的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我有一张如下表:

                  -------------
                  ID   | NAME
                  -------------
                  1001 | A,B,C
                  1002 | D,E,F
                  1003 | C,E,G
                  -------------
                  

                  我希望这些值显示为:

                  -------------
                  ID   | NAME
                  -------------
                  1001 | A
                  1001 | B
                  1001 | C
                  1002 | D
                  1002 | E
                  1002 | F
                  1003 | C
                  1003 | E
                  1003 | G
                  -------------
                  

                  我尝试过:

                  select split('A,B,C,D,E,F', ',') from dual; -- WILL RETURN COLLECTION
                  
                  select column_value
                  from table (select split('A,B,C,D,E,F', ',') from dual); -- RETURN COLUMN_VALUE
                  

                  推荐答案

                  尝试使用以下查询:

                   WITH T AS (SELECT 'A,B,C,D,E,F' STR  FROM DUAL)   SELECT    
                   REGEXP_SUBSTR (STR, '[^,]+', 1, LEVEL) SPLIT_VALUES  FROM T 
                   CONNECT BY LEVEL <= (SELECT LENGTH (REPLACE (STR, ',', NULL)) FROM T)
                  

                  下面带有 ID 的查询:

                  Below Query with ID:

                  WITH TAB AS 
                  (SELECT '1001' ID, 'A,B,C,D,E,F' STR FROM DUAL
                  )
                  SELECT    ID, 
                  REGEXP_SUBSTR (STR, '[^,]+', 1, LEVEL) SPLIT_VALUES  FROM TAB 
                  CONNECT BY LEVEL <= (SELECT LENGTH (REPLACE (STR, ',', NULL)) FROM TAB);
                  

                  尝试对多个 ID 和多个分隔使用以下查询:

                  Try using below query for multiple IDs and multiple separation:

                  WITH TAB AS 
                  (SELECT '1001' ID, 'A,B,C,D,E,F' STR FROM DUAL
                  UNION
                  SELECT '1002' ID, 'D,E,F' STR FROM DUAL
                  UNION
                  SELECT '1003' ID, 'C,E,G' STR FROM DUAL
                  )
                  select id, substr(STR, instr(STR, ',', 1, lvl) + 1, instr(STR, ',', 1, lvl + 1) - instr(STR, ',', 1, lvl) - 1) name 
                  from
                  ( select ',' || STR || ',' as STR, id from TAB ),
                  ( select level as lvl from dual connect by level <= 100 )
                  where lvl <= length(STR) - length(replace(STR, ',')) - 1
                  
                  order by ID, NAME
                  

                  这篇关于通过 Oracle SQL 查询将行中的列的逗号分隔值拆分的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:如何在 Oracle 中使用 Timestamp_to_scn 和 Scn_to_timestamp? 下一篇:Oracle 中的 DATEDIFF 函数

                  相关文章

                1. <i id='tV3wv'><tr id='tV3wv'><dt id='tV3wv'><q id='tV3wv'><span id='tV3wv'><b id='tV3wv'><form id='tV3wv'><ins id='tV3wv'></ins><ul id='tV3wv'></ul><sub id='tV3wv'></sub></form><legend id='tV3wv'></legend><bdo id='tV3wv'><pre id='tV3wv'><center id='tV3wv'></center></pre></bdo></b><th id='tV3wv'></th></span></q></dt></tr></i><div id='tV3wv'><tfoot id='tV3wv'></tfoot><dl id='tV3wv'><fieldset id='tV3wv'></fieldset></dl></div>
                  <tfoot id='tV3wv'></tfoot>
                      <legend id='tV3wv'><style id='tV3wv'><dir id='tV3wv'><q id='tV3wv'></q></dir></style></legend>
                        <bdo id='tV3wv'></bdo><ul id='tV3wv'></ul>
                    1. <small id='tV3wv'></small><noframes id='tV3wv'>