我的数据库中有一行,其中包含一些带有一些名称的字段,以;
分隔。
我想通过Select查询获得尽可能多的行,我的字段中有名称。
所以,如果我进入我的DB:
id names
1 john;jack;mike
有了这个,我必须得到这个查询:
SELECT id, split(names, ';') from table
1 john
1 jack
1 mike
我没有任何其他表,所以没有加入。
我写道:split(名字,';'),但这只是我想要做的一个例子。
但是我不知道如何分割我的字段名称就像前面那样。
我没有找到任何帮助我的方法,找到了办法。
我需要使用功能吗?是否有使用oracle的功能?
谢谢。
答案 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 强>