2011-04-19 61 views
1

我需要合并几个表,其中一个表有一个地址字段,第二个表作为3个地址行字段。Oracle:在新行上拆分文本字段

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

如何将此字段拆分为3?

更新:

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

select dump(field) from table; 

回答

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 

分享并享受