将值从一列更改为另一列

时间:2016-02-21 22:19:11

标签: sql regex postgresql

我有一张桌子:

ID        | Description
--------------------
1.13.1-3  | .1 Hello
1.13.1-3  | .2 World
1.13.1-3  | .3 Text
4.54.1-4  | sthg (.1) Ble
4.54.1-4  | sthg (.2) Bla
4.54.1-4  | aaaa (.3) Qwer
4.54.1-4  | bbbb (.4) Tyuio

并希望通过从第二列获取值来更改ID的结尾,以获得如下结果:

ID       | Description
--------------------
1.13.1   | Hello
1.13.2   | World
1.13.3   | Text
4.54.1   | Ble
4.54.2   | Bla
4.54.3   | Qwer
4.54.4   | Tyuio

在postgresql中有没有快速的方法呢?

1 个答案:

答案 0 :(得分:1)

使用正则表达式将字符串操作为您想要的内容:

update mytable set
ID = regexp_replace(ID, '\.[^.]*$', '') || substring(Description from '\.[0-9+]'),
Description = regexp_replace(Description, '.*\.[0-9]+\S* ', '')

请参阅SQLFiddle,显示此查询使用您的数据。