Postgresql修剪字符串到第一个数字

时间:2015-06-08 18:07:00

标签: sql postgresql psql

我有一张邮政编码表,比如N9Z3W。我只想复制N' N' N'部分到不同的列。基本上我需要在第一个数字之后切断所有内容

NE9ZW成为NE

L9C3K3变为L

如何使用postgres(在单个更新查询中)

1 个答案:

答案 0 :(得分:1)

CREATE TABLE meuk
        (oldval text
        , newval text
        );

insert into meuk(oldval) values
 ('NE9ZW' )
, ('L9C3K3' )
        ;

UPDATE meuk
SET newval = regexp_replace (oldval, '([A-Z]*).*', '\1' )
        ;
SELECT * FROM meuk;

结果:

 oldval | newval 
--------+--------
 NE9ZW  | NE
 L9C3K3 | L
(2 rows)

BTW:这并不严格消耗在第一个数字上,而是所有主要的oppercase字符。对于某些,使用否定的(带^)模式,如下所示:

UPDATE meuk
SET newval = regexp_replace (oldval, '([^0-9]*)[0-9].*', '\1' )
        ;