1

如果我有以下输入(不包括引号):

“小号天鹅的祖传领土要求”

如何将所有多个空间折叠为一个空间,以便将输入转换为:

“小号天鹅的祖传领土要求”

这将在插入/更新的触发函数中使用(它已经修剪了前导/尾随空格)。目前,如果输入包含多个相邻空格,它会引发异常,但我宁愿它在插入之前简单地将其转换为有效的东西。

最好的方法是什么?我似乎找不到 PL/pgSQL 的正则表达式替换函数。有一个text_replace功能,但这最多只能将两个空格折叠为一个(意味着三个连续的空格将折叠为两个)。一遍又一遍地调用这个函数并不理想。

4

2 回答 2

2

PostgreSQL 有一个您应该能够使用的REGEXP_REPLACE函数。

DECLARE
  result VARCHAR2(255);
BEGIN
  result := REGEXP_REPLACE(subject, $$ {2,}$$, $$ $$, 'g');
END;
于 2010-05-03T06:25:55.937 回答
0

您可以使用 plperl,并为此目的使用 perl 正则表达式。

升级是好的,但 plperl 可以让你刮得更久。

于 2010-05-09T14:49:04.713 回答