我需要合并几个表,其中一个表有一个Address字段,第二个表是3个地址行字段。
第一个表中的单个地址字段包含换行符。
如何将此字段拆分为3?
更新
原来有些记录有CHR(10)|| CHR(13),其他人CHR(13)|| CHR(10),还有其他人只是CHAR(13)。无论如何,下面接受的解决方案有效。一个有用的方法是
select dump(field) from table;
答案 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
分享并享受