Oracle:在换行符上拆分文本字段

Oracle:在换行符上拆分文本字段,oracle,line-breaks,Oracle,Line Breaks,我需要合并两个表,其中一个表有一个地址字段,第二个表有3个地址行字段 第一个表中的单个地址字段包括换行符 如何将此字段拆分为3 更新: 事实证明,有些唱片上有CHR10 | | CHR13,有些唱片上有CHR13 | | CHR10,还有一些唱片上只有CHAR13。不管怎样,下面公认的解决方案是有效的。一个有用的方法是 select dump(field) from table; 假设您的换行符为CHR10,则应使用以下类似操作: SELECT TRIM(REGEXP_REPLACE(addr

我需要合并两个表,其中一个表有一个地址字段,第二个表有3个地址行字段

第一个表中的单个地址字段包括换行符

如何将此字段拆分为3

更新:

事实证明,有些唱片上有CHR10 | | CHR13,有些唱片上有CHR13 | | CHR10,还有一些唱片上只有CHAR13。不管怎样,下面公认的解决方案是有效的。一个有用的方法是

select dump(field) from table;

假设您的换行符为CHR10,则应使用以下类似操作:

SELECT TRIM(REGEXP_REPLACE(addr, '(.*)' || CHR(10) || '.*' || CHR(10) || '.*', '\1')) AS STREET_ADDR,
       TRIM(REGEXP_REPLACE(addr, '.*' || CHR(10) || '(.*)' || CHR(10) || '.*', '\1')) AS CITY,
       TRIM(REGEXP_REPLACE(addr, '.*' || CHR(10) || '.*' || CHR(10) || '(.*)', '\1')) AS STATE
      FROM addr_table; 
如果使用以下语句填充addr_表:

INSERT INTO addr_table(addr)
VALUES('12345 MY STREET' || CHR(10) || 'NOWHERESVILLE' || CHR(10) || 'ASTATE');
上述选择将返回

STREET_ADDR     CITY            STATE
12345 MY STREET NOWHERESVILLE   ASTATE

共享和享受

假设您的换行符是CHR10,下面的内容应该可以使用:

SELECT TRIM(REGEXP_REPLACE(addr, '(.*)' || CHR(10) || '.*' || CHR(10) || '.*', '\1')) AS STREET_ADDR,
       TRIM(REGEXP_REPLACE(addr, '.*' || CHR(10) || '(.*)' || CHR(10) || '.*', '\1')) AS CITY,
       TRIM(REGEXP_REPLACE(addr, '.*' || CHR(10) || '.*' || CHR(10) || '(.*)', '\1')) AS STATE
      FROM addr_table; 
如果使用以下语句填充addr_表:

INSERT INTO addr_table(addr)
VALUES('12345 MY STREET' || CHR(10) || 'NOWHERESVILLE' || CHR(10) || 'ASTATE');
上述选择将返回

STREET_ADDR     CITY            STATE
12345 MY STREET NOWHERESVILLE   ASTATE
分享和享受