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

时间:2011-04-19 18:44:23

标签: oracle line-breaks

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

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

如何将此字段拆分为3?

更新

原来有些记录有CHR(10)|| CHR(13),其他人CHR(13)|| CHR(10),还有其他人只是CHAR(13)。无论如何,下面接受的解决方案有效。一个有用的方法是

select dump(field) from table;

1 个答案:

答案 0 :(得分:4)

假设您的换行符是CHR(10),则以下内容应该有效:

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_table:

INSERT INTO addr_table(addr)
VALUES('12345 MY STREET' || CHR(10) || 'NOWHERESVILLE' || CHR(10) || 'ASTATE');

上面的SELECT将返回

STREET_ADDR     CITY            STATE
12345 MY STREET NOWHERESVILLE   ASTATE

分享并享受