【问题标题】:Make a query to split a line into x line depending on a field根据字段进行查询以将行拆分为 x 行
【发布时间】: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有这样的功能吗?

谢谢。

【问题讨论】:

  • @PeterLang 差不多,但是其他问题的答案对我不起作用,而 BhupeshC 的答案非常适合,这要归功于之前的情况。将问题与不正确答案联系起来的编辑并不真正相关。

标签: sql oracle10g


【解决方案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关键字添加最后两行的一些解释吗?
猜你喜欢
  • 2012-08-09
  • 1970-01-01
  • 1970-01-01
  • 2022-12-17
  • 2016-12-01
  • 2020-02-10
  • 1970-01-01
  • 2015-03-27
  • 2012-08-11
相关资源
最近更新 更多