我有一张邮政编码表,比如N9Z3W。我只想复制N' N' N'部分到不同的列。基本上我需要在第一个数字之后切断所有内容
NE9ZW成为NE
L9C3K3变为L
如何使用postgres(在单个更新查询中)
答案 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' )
;