我需要将一个字符串拆分成多个字符串。以下是将地址拆分为相应地址行的pl / sql过程的要求。该程序的参数是:
创建或替换过程split_address
(
varchar2中的地址,
al1 out varchar2,
al2 out varchar2,
al3 out varchar2,
al4 out varchar2
)
是......结束;
- 地址是一个varchar2(250),它必须分成4行al1,al2,al3,al4 of varchar2(100)。
- 地址包含换行符CHR(10)。基于这些,必须完成拆分。
- 如果地址的长度小于或等于100,则需要将整个地址放入第3地址行al3。
- 仅当地址长度超过100时才需要进行拆分。
- 如果一行超过100个字符,那么该行必须通过分隔符','分隔成两个,在中间或靠近第50个位置
并将该行的其余部分添加到第二个地址行
- 如果行数超过4,则将每个段合并为一个地址行,最多100个字符,最多4个段
- 地址第3行是强制性输出。
醇>
让我举个例子。让地址为
'门#nn
XXXXXXXXXX
XXXXXXXXXXX
YYYY
YYYYYYYYY
拉链NNNNNN
zzzzzzzzzzzzzzz
ZZZZZZZZZZZZZZZZZZZZ'
如果其总长度<1。 100然后它必须直接放入al3而不分裂。
如果地址长度超过100则问题就出现了。
该地址有8行,但必须分为4行,如
- 'door #nn xxxxxxxxxx XXXXXXXXXX yyyy' - &gt;长度100最多
- 'YYYYYYYYYYY Zip-NNNNNNN,zzzzzzzzzzzz' - &gt;长度100最多
- 'zzzzzzzzzzz,ZZZZZZZZZZZZZZZZZZZZZ' - &gt;长度100最多
- 'ZZZZZZ' - &gt;长度100最多
醇>
系统是oracle-10g,我可以使用它的功能。问题很简单,但将逻辑纳入代码有点困难。请提供一些提示。提前谢谢。