2016-02-21 35 views
0

我有一個表:變化值插入到另一

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.3 Text''。 –

+0

'substring(來自'。* \。(\ d *)''''的描述')提取數字,'substring(來自'。* \。\ d * \ s *(。*)'的描述'數字和子字符串(來自'(\ d * \。\ d *)\。')或子字符串(來自'(。*)\。\ d * - \ d *')'的ID來提取需要的部分來自ID。 – Abelisto

回答

1

使用正則表達式來操縱串到你想要的東西:

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

SQLFiddle顯示此查詢與您的數據的工作。

+0

對不起,我編輯了數據,因爲我忘記了varius的描述 – Mateusz

+0

@Mateusz好的。解決了。請參閱編輯。 – Bohemian

相關問題