根据字段进行查询以将行拆分为 x 行
Posted
技术标签:
【中文标题】根据字段进行查询以将行拆分为 x 行【英文标题】:Make a query to split a line into x line depending on a field 【发布时间】:2014-03-27 13:10:44 【问题描述】:我的数据库中有一行,其中包含一个带有一些名称的字段,由 ;
分隔。
我试图通过 Select 查询获得尽可能多的行,以确保我的字段中有名称。
所以,如果我进入我的数据库:
id names
1 john;jack;mike
有了这个,我必须得到这个查询:
SELECT id, split(names, ';') from table
1 john
1 jack
1 mike
我没有其他表,所以没有加入。
我写的是:split(names, ';'),但这只是我想做的一个例子。
但我不知道如何拆分我的字段名称以像前面那样做。
我没有找到任何可以帮助我的方法,请找到方法。
我需要使用函数吗? oracle有这样的功能吗?
谢谢。
【问题讨论】:
Oracle 10g Splitting string into multiple rows的可能重复 @PeterLang 差不多,但是其他问题的答案对我不起作用,而 BhupeshC 的答案非常适合,这要归功于之前的情况。将问题与不正确答案联系起来的编辑并不真正相关。 【参考方案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
【讨论】:
完美。你能用PRIOR
关键字添加最后两行的一些解释吗?以上是关于根据字段进行查询以将行拆分为 x 行的主要内容,如果未能解决你的问题,请参考以下文章