【发布时间】:2013-01-14 17:22:55
【问题描述】:
我有一个 varchar 变量,其内容如下:'123,12,7654321,9998...'。 我在 Oracle 10gR2 工作。 如何实现以下输出格式?:
------
123
12
7654321
9998
...
------
谢谢!
【问题讨论】:
标签: sql regex string oracle oracle10g
我有一个 varchar 变量,其内容如下:'123,12,7654321,9998...'。 我在 Oracle 10gR2 工作。 如何实现以下输出格式?:
------
123
12
7654321
9998
...
------
谢谢!
【问题讨论】:
标签: sql regex string oracle oracle10g
试试这个:
/* 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)
【讨论】:
这是使用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;
我承认我是从 article 改编而来的。您要做的通常是放入一个名为“split”的函数中。
【讨论】:
试试这个
SELECT EXTRACTVALUE(COLUMN_VALUE,'text()') VALS
FROM XMLTABLE('123,12,7654321,9998');
或
SELECT COLUMN_VALUE VALS FROM XMLTABLE('123,12,7654321,9998');
【讨论】: