如何将具有分隔符的一个表中的列拆分为新表中的多个列?

时间:2017-02-11 00:13:10

标签: plsqldeveloper

我是一位自学成才的PL / SQL查询编写者,对编码相对较新。我知道如何执行基本功能,但没有接受过正式培训,通常以我的方式解决我遇到的任何问题。大多数时候,我只是在PL / SQL开发人员中加入不同的表或视图来制作

我试图根据一系列三个分隔符从表中分解一行,在本例中为“>”(包括空格)。例如,我想从名为Locations的表中拉出“USA> California> Los Angeles”的位置,并将其分成三个不同的列(Country,State和City)。但是,重复分隔符的数量可以变化。有时它可能只是美国>加利福尼亚州和其他时候可能是美国>加利福尼亚>洛杉矶>康普顿。

我想在一个表中使用此列

[位置]

[美国>加利福尼亚>洛杉矶]

并将三列插入另一个表

[国家] [国家] [城市]

[美国] [加利福尼亚] [洛杉矶]

到目前为止,我只能通过使用查询而不是函数/更高级的技术来解决问题。如果有任何方法可以保持这个简单和查询,我真的很感激任何见解!同样,我使用PL / SQL开发人员,所以我知道限制了我能够使用的某些功能。

1 个答案:

答案 0 :(得分:0)

不太好,但应该适合你:

insert into <your table 2> (Country, State, City)
    select trim(REGEXP_SUBSTR(Location, '^([^>])*')),
           trim(REGEXP_REPLACE(REGEXP_SUBSTR(Location, '>([^>])*'), '>', '')),
           trim(REGEXP_REPLACE(REGEXP_SUBSTR(Location, '>([^>])*', 1, 2), '>', ''))
      from <your table 1>;

此致