进行查询以根据字段将行拆分为x行

时间:2014-03-27 13:10:44

标签: sql oracle10g

我的数据库中有一行,其中包含一些带有一些名称的字段,以;分隔。

我想通过Select查询获得尽可能多的行,我的字段中有名称。

所以,如果我进入我的DB:

id names
1  john;jack;mike

有了这个,我必须得到这个查询:

SELECT id, split(names, ';') from table 

1 john
1 jack
1 mike

我没有任何其他表,所以没有加入。

我写道:split(名字,';'),但这只是我想要做的一个例子。

但是我不知道如何分割我的字段名称就像前面那样。

我没有找到任何帮助我的方法,找到了办法。

我需要使用功能吗?是否有使用oracle的功能?

谢谢。

1 个答案:

答案 0 :(得分:1)

SELECT id, TRIM(REGEXP_SUBSTR( names, '[^;]+', 1, LEVEL)) FROM table_name
CONNECT BY LEVEL <= LENGTH(REGEXP_REPLACE(names, '[^;]+')) + 1
AND PRIOR id = id
AND PRIOR DBMS_RANDOM.VALUE IS NOT NULL

<强> SQL Fiddle