我使用PostgreSQL 9.5和有一個表有「AREA_NAME」文本名稱中有編號的一些推廣柱:使用LPAD在REGEXP_REPLACE
area_name
----------------
AREA
AREA EXT
AREA EXT 1
AREA EXT 5
AREA EXT 49
AREA EXT 50
我想,如上圖所示由extention數字排序的結果。
我已經嘗試使用regexp_replace來lpad數字0,但使用4的長度是在數字前加2 0s,無論它是否是1或2位數!
create table ext_test (
area_name text
);
insert into ext_test values
('AREA'),
('AREA EXT'),
('AREA EXT 1'),
('AREA EXT 5'),
('AREA EXT 49'),
('AREA EXT 50');
select
area_name,
regexp_replace(area_name, ' EXT (\d*)', ' EXT ' || lpad('\1', 4, '0')) as order_result
from ext_test
order by order_result;
area_name | order_result
------------------------------
AREA | AREA
AREA EXT | AREA EXT
AREA EXT 1 | AREA EXT 001
AREA EXT 49 | AREA EXT 0049
AREA EXT 5 | AREA EXT 005
AREA EXT 50 | AREA EXT 0050
我在哪裏出錯了替換表達式?
我希望你看看我的答案。 ;)大大簡單快捷。 –