1

コンマ区切りの文字列として提供されるレコードの順序を保持したい。区切り文字列の 5番目の項目は null です。5行目もnullにする必要があります

 with test as 
(select 'ABC,DEF,GHI,JKL,,MNO' str from dual  
  )  
  select rownum, regexp_substr (str, '[^,]+', 1, rownum) split  
    from test  
 connect by  level <= length (regexp_replace (str, '[^,]+' ))  + 1

私が得ている現在の結果は、これを6番目の位置に置きます:

1   ABC
2   DEF
3   GHI
4   JKL
5   MNO
6   
4

3 に答える 3

0

これは動作します..

SELECT
      ROWNUM,
      CAST ( REGEXP_SUBSTR ( STR,
                        '(.*?)(,|$)',
                        1,
                        LEVEL,
                        NULL,
                        1 ) AS CHAR ( 12 ) )
          OUTPUT
FROM
      (SELECT 'ABC,DEF,GHI,JKL,,MNO' AS STR FROM DUAL)
CONNECT BY
      LEVEL <= REGEXP_COUNT ( STR,
                         ',' )
             + 1;
于 2013-09-17T15:43:10.207 に答える
0

次のようなことを試してください:

SELECT
      STR,
      REPLACE ( SUBSTR ( STR,
                     CASE LEVEL
                         WHEN 1
                         THEN
                             0
                         ELSE
                             INSTR ( STR,
                                    '~',
                                    1,
                                    LEVEL
                                    - 1 )
                     END
                     + 1,
                     1 ),
              '~' )
FROM
      (SELECT 'A~~C~~E' AS STR FROM DUAL)
CONNECT BY
      LEVEL <= LENGTH ( REGEXP_REPLACE ( STR,
                                  '[^~]+' ) )
             + 1;
于 2013-09-17T15:38:39.513 に答える