在PostgreSQL中将地址字段分成两行

时间:2019-03-18 07:13:42

标签: postgresql postgresql-10

我想将地址输入参数字段分为两行;在一行中,最多只能有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 个答案:

答案 0 :(得分:1)

这将引入换行符,而不是字符串中第162位之前的第一个空格:

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

我不确定这是否是您的需要,但是无论如何这都是您的起点。