是否可以使用以下命令進行「查找和替換」?查找多個字符串並用Postgres中的單個字符串替換
UPDATE __table__ SET __column__ = replace(__column__, ' ', '_');
如何定義字符串數組被發現(','
,3210,':'
,' '
)與'_'
更換?
是否可以使用以下命令進行「查找和替換」?查找多個字符串並用Postgres中的單個字符串替換
UPDATE __table__ SET __column__ = replace(__column__, ' ', '_');
如何定義字符串數組被發現(','
,3210,':'
,' '
)與'_'
更換?
閱讀部分約Bracket Expressions這也解釋瞭如何搜索字符的字符串內更換
但是這應該爲你工作
UPDATE __table__ SET __column__ = regexp_replace(__column__, E'[\\s,;:]','_','g')
這工作,謝謝!我很驚訝他們沒有用'array'至少包含括號中的括號,儘管如果有人問這個問題,他們至少會發現這個Q/A。感謝您鏈接到文檔。表9-16包含了關於空間的詳細信息。 – John
regexp_replace()
是強大的,多功能的......和緩慢的。
如果可以,請使用簡單(功能更強大,功能更強大)的replace()
,速度要快得多。
對於手頭的簡單例子(用另一個單個字符替換單個字符的列表),使用translate()
- 更簡單,更快。而且更不容易出錯。
UPDATE tbl
SET col = translate(col, ',;: ', '____')
WHERE col <> translate(col, ',;: ', '____'); -- avoid empty updates
只更新實際更改的行。無條件地更新所有行是常見的(可能是昂貴的)錯誤。詳細信息:
注意,這只是取代了空格字符(' '
),而類速記\s
正則表達式匹配的字符類[[:space:]]
的所有whitespace characters。
使用'regexp_replace' –
@CraigRinger例如沒有任何運氣,試着用'''{',',':',''}''嘗試,如果你想發表一個工作答案,我會很樂意接受它。 – John
如果您的「字符串」實際上是單個字符,請不要使用'regexp_replace()',否則這會比所需的更昂貴和複雜。 –