删除/替换列值中的特殊字符?

时间:2017-05-25 23:12:54

标签: postgresql

我有一个包含值的表列,我想从中删除所有连字符。这些值可能包含多个连字符,长度也不同。

示例:对于所有值,我想用'123ABCDefghi'替换'123 - ABCD - efghi'。

删除所有连字符的最简单方法是什么?更新表中的所有列值?

2 个答案:

答案 0 :(得分:10)

您可以使用regexp_replace功能仅保留数字和字母,如下所示:

update mytable
   set myfield = regexp_replace(myfield, '[^\w]+','');

这意味着所有不是数字或字母或下划线的内容都将被替换为任何内容(包括-, space, dot, comma等)。

如果您还希望包含要替换的_\w将其保留),您可以将正则表达式更改为[^\w]+|_

或者,如果您想要严格处理必须删除的字符,请使用:[- ]+,在这种情况下,这里是短划线和空格。

答案 1 :(得分:0)

你可以使用它。

update table set column = format('%s%s', left(column, 3), right(column, -6));

在:

后:

相关问题