0

「123,12,7654321,9998...」のような内容の varchar 変数があります。私はOracle 10gR2で働いています。次の出力形式を実現するにはどうすればよいですか?:

------
123
12
7654321
9998
...
------

ありがとう!

4

3 に答える 3

1

これを試して

SELECT EXTRACTVALUE(COLUMN_VALUE,'text()') VALS 
FROM XMLTABLE('123,12,7654321,9998');

また

SELECT COLUMN_VALUE VALS FROM XMLTABLE('123,12,7654321,9998');
于 2013-01-30T19:07:10.817 に答える
0

これを試して :

/* Formatted on 1/30/2013 1:24:07 PM (QP5 v5.227.12220.39724) */
WITH val AS (SELECT '123,12,7654321,9998' txt FROM DUAL)
SELECT REGEXP_SUBSTR (txt,
              '[0-9]+|[a-z]+|[A-Z]+',
              1,
              lvl)
  FROM (SELECT txt,
           LEVEL lvl
      FROM val
    CONNECT BY LEVEL <=   LENGTH (txt)
                - LENGTH (REPLACE (txt,
                           ','))
                + 1)
于 2013-01-30T19:25:53.723 に答える
0

これを使用する方法は次のconnectとおりです。

with str as (select '123,12,7654321,9998' as val from dual)
select cast(regexp_substr(val,'[^,]+', 1, level) as int)
from str
connect by cast(regexp_substr(val, '[^,]+', 1, level) as int) is not null;

私はこの記事からそれを適応させたことを認めます。あなたがやろうとしていることは、一般的に「分割」と呼ばれる関数に入れられます。

于 2013-01-30T19:10:16.443 に答える