Разделить адресное поле на две строки в PostgreSQL - PullRequest
0 голосов
/ 18 марта 2019

Я хочу разбить поле входного параметра адреса на две строки;в одной строке должно быть только 160 символов (максимум), и оно будет разбито на любой пробел, ближайший к 160-му символу.Пожалуйста, помогите!

например, если у меня есть адресная переменная pi_billing_adress

pi_billing_adress :=  'MS-9/804, ABC Street , Sector - 56, near NFC market , Malviya Nagar , New Delhi India';

Я должен взять этот адрес в две строки, разделив их на 160 символов, используя приведенный ниже код.

SELECT position(' ' in reverse(SUBSTRING(pi_billing_adress,1, 160))) INTO v_space_postion;

v_billing_address_line1 := SUBSTRING(pi_billing_adress,1, (160-v_space_postion));

v_billing_address_line2 := SUBSTRING(pi_shipping_address, (v_address_lenghth-v_space_postion)+1,LENGTH(pi_shipping_address));

pi_billing_address := concat(v_billing_address_line1, chr(10), v_billing_address_line2 );

1 Ответ

1 голос
/ 18 марта 2019

Это введет новую строку вместо первого пробела перед 162-й позицией в строке:

SELECT regexp_replace(pi_billing_adress, E'^(.{1,160}) (.*)$', E'\\1\n\\2');

Я не уверен, что это то, что вам нужно, но в любом случае это старточко для вас.

...