36

我有一个表,其中包含许多行,其中的列包含 URL。URL 的格式为:

http://one.example1.com:9999/dotFile.com

我想替换该列中的所有匹配项,http://example2.com/dotFile.com同时保留 :9999 之后的所有内容。我找到了一些关于 regexp_matches 和 regexp_replace 的文档,但我不能完全理解它。

4

2 回答 2

64

要替换固定字符串,请使用简单replace()函数。

要替换动态字符串,您可以regexp_replace()这样使用:

UPDATE
  YourTable
SET
  TheColumn = regexp_replace(
    TheColumn, 'http://[^:\s]+:9999(\S+)', 'http://example2.com\1', 'g'
  )
于 2012-07-30T14:04:23.183 回答
36

如果您知道网址,则不必使用正则表达式。replace() 函数应该适合你:

replace(string text, from text, to text)        
Replace all occurrences in string of substring from with substring to   
example: replace('abcdefabcdef', 'cd', 'XX')    abXXefabXXef

你可以试试:

UPDATE yourtable SET
  yourcolumn = replace(yourcolumn, 'one.example1.com:9999','example2.com')
;
于 2012-07-30T14:04:06.720 回答