我需要将单个字符串的地址拆分为多个字符串。以下是将地址拆分为相应地址行的 pl/sql 过程的要求。该过程的参数是:
创建或替换过程 split_address (地址 in varchar2, al1 out varchar2, al2 out varchar2, al3 out varchar2, al4 out varchar2) is.... end;
- address 是一个 varchar2(250),它必须被分成 4 行 al1,al2,al3,al4 的每行 varchar2(100)。
- 地址包含换行符 CHR(10)。基于这些,必须进行拆分。
- 如果地址的长度小于或等于 100,则需要将整个地址放入第三个地址行 al3。
- 只有当地址长度超过 100 时,才需要进行拆分。
- 如果一行超过 100 个字符,则该行必须在中间或第 50 个位置附近通过分隔符“,”分成两行,并将该行的其余部分添加到第二个地址行
- 如果行数超过 4,则将每个段合并为一个地址行,最多 100 个字符,最多 4 个段
- 地址行 3 是强制输出。
让我举个例子。让地址为
'门 #nn
xxxxxxxxxx
XXXXXXXXXXXX
yyyy
YYYYYYYYY
Zip-NNNNNN
zzzzzzzzzzzzzzz
ZZZZZZZZZZZZZZZZZZZZ'
如果 this 的总长度 < 100 则必须直接放入 al3 中,不要拆分。如果地址长度超过 100,那么问题就来了。这个地址有 8 行,但必须做成 4 行,如
- '门 #nn xxxxxxxxxx XXXXXXXXXX yyyy' -> 最大长度 100
- 'YYYYYYYYYYYY Zip-NNNNNNN,zzzzzzzzzzzz' -> 最大长度 100
- 'zzzzzzzzzzz, ZZZZZZZZZZZZZZZZZZZZZ' -> 最大长度 100
- 'ZZZZZZ' -> 最大长度 100
系统是oracle-10g,我可以使用它的特性。问题很简单,但是将逻辑放入代码中有点困难。请提供一些提示。提前致谢。