2015-12-04 33 views
1

我試圖在表的列中替換' - '的所有出現。 我還需要的是替換破折號後面存在的字符串及其隨機數。在postgres中一起使用REPLACE和LIKE

更具體地講,這是我的一個值:

"ANDRIU 5-9, CHAL 152 34, SOMETHING" 

我想是更換這一部分:一個空的空間

-9 

。 問題是:9可以是任何數字,不一定是一個數字。

所以我需要找到整個字符串中第一個逗號的位置。和短劃線的位置,然後根據索引值替換它。

這可能嗎?

回答

2

Postgres提供的功能regexp_replace(),它不直接想要的東西:

select regexp_replace(col, '-[0-9]+', ' ') 
+0

魔術!出於學習的目的:「+」符號在哪裏起作用,以及您在第一個逗號中停止的位置是什麼? – user1919

+1

@dkar。 。 。該文檔解釋了正則表達式。但是,[0-9]匹配一個數字。 「+」匹配一個或多個模式(如此多個數字)。所以,該模式停止在任何非數字。 –