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].*', '' )
;
我有一个 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].*', '' )
;