Мне нужно разделить адрес, представляющий собой одну строку, на несколько строк. Ниже приведены требования к процедуре pl / sql, которая разбивает адрес на соответствующие адресные строки. Параметры процедуры:
создать или заменить процедуру split_address
(
адрес в varchar2,
al1 out varchar2,
al2 out varchar2,
al3 out varchar2,
al4 out varchar2
)
это .... конец;
- адрес - это varchar2 (250), который должен быть разбит на 4 строки al1, al2, al3, al4 varchar2 (100) каждая.
- адрес содержит символы новой строки CHR (10). И на основании этого должен быть сделан раскол.
- если длина адреса меньше или равна 100, тогда весь адрес необходимо поместить в третью строку адреса al3.
- только если длина адреса больше 100, деление должно быть выполнено.
- если одна строка длиннее 100 символов, то строка должна быть разделена на две с помощью разделителя ',' в середине или около 50-й позиции
и остаток строки добавляется ко второй адресной строке
- Если количество строк превышает 4, объедините каждый сегмент в одну адресную строку до максимум 100 символов до 4 сегментов
- адресная строка 3 является обязательным выходом.
Позвольте мне привести пример. Пусть адрес будет
'door # nn
XXXXXXXXXX
XXXXXXXXXXX
гггг
YYYYYYYYY
Zip-NNNNNN
zzzzzzzzzzzzzzz
ZZZZZZZZZZZZZZZZZZZZ '
Если общая длина составляет <100, то она должна быть помещена в al3 напрямую, без разделения.
Если длина адреса больше 100, тогда возникает проблема.
Этот адрес имеет 8 строк, но должен быть разделен на 4 строки, например </p>
- 'door #nn xxxxxxxxxx XXXXXXXXXX гггг' -> длина 100 макс.
- 'ГГГГГГГГГ Zip-NNNNNNN, zzzzzzzzzzzz' -> длина 100 макс.
- 'zzzzzzzzzzz, ZZZZZZZZZZZZZZZZZZZZ' -> длина 100 макс.
- 'ZZZZZZ' -> длина 100 макс.
Система oracle-10g, я могу использовать ее возможности. Проблема проста, но получить логику в коде немного сложно. Пожалуйста, дайте несколько советов. Заранее спасибо.