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

Postgresql trimming string up to the first digit

我有一个 table 邮政编码,例如 N9Z3W。我只想将 'N' 部分复制到不同的列。基本上我需要在第一个数字

之后切断所有内容

NE9ZW 变成 NE

L9C3K3 变为 L

我如何使用 postgres 执行此操作(在单个更新查询中)

CREATE TABLE meuk
        (oldval text
        , newval text
        );

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

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

结果:


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

顺便说一句:这并不严格使用第一个数字,而是所有前导的大写字符。对于最多 something,使用取反(^)模式,如下所示:

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