我想将地址输入参数字段分为两行;在一行中,最多只能有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 );
答案 0 :(得分:1)
这将引入换行符,而不是字符串中第162位之前的第一个空格:
SELECT regexp_replace(pi_billing_adress, E'^(.{1,160}) (.*)$', E'\\1\n\\2');
我不确定这是否是您的需要,但是无论如何这都是您的起点。