模式匹配和替换

时间:2013-07-31 08:41:26

标签: sql postgresql plpgsql

假设我有一张这样的表:

text_col
---------------
apple, pear
apple/orange, pear~pear|pear
kiwi banana
pear\kiwi

我想将此列中的所有pear更改为watermelon

所有我能想到的是select逐行pearupdate pearwatermelon的所有行。

有更好/更清洁的方法吗?

我正在尝试创建一个plpgsql触发器函数来实现此目的。

2 个答案:

答案 0 :(得分:2)

replace功能呢?

<强>功能

  

替换(字符串文本,从文本到文本)

<强>描述

  

将子串字符串中出现的所有内容替换为子字符串

<强>示例

  

替换('abcdefabcdef','cd','XX')abXXefabXXef

您的代码是简单更新

Update table T set text_col = replace( text_col, 'pear', 'watermelon' );

更新由于Igor Romanchenko的建议:

Update table T 
set text_col = replace( text_col, 'pear', 'watermelon' )
where text_col like '%pear%';

答案 1 :(得分:0)

从tablename

中选择replace(text_col,'pear','watermelon')