Я хочу разделить поле входного параметра адреса на две строки; в одной строке должно быть только 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 );
Пожалуйста, редактировать ваш вопрос (щелкнув ссылку редактировать под ним) и добавьте немного образец данных и ожидаемый результат на основе этих данных. Форматированный текст пожалуйста, нет снимков экрана. (редактировать ваш вопрос - укажите почтовый индекс нет или дополнительную информацию в комментариях)





Это введет новую строку вместо первого пробела перед 162-й позицией в строке:
SELECT regexp_replace(pi_billing_adress, E'^(.{1,160}) (.*)$', E'\\1\n\\2');
Я не уверен, что это то, что вам нужно, но в любом случае это отправная точка для вас.
Пожалуйста, опубликуйте воспроизводимый пример вашей проблемы.