如果我有以下输入(不包括引号):
"The ancestral territorial imperatives of the trumpeter swan"
如何将所有多个空格折叠到单个空格,以便将输入转换为:
"The ancestral territorial imperatives of the trumpeter swan"
这将在插入/更新(已经修剪前导/尾随空格)的触发器函数中使用。目前,如果输入包含多个相邻的空格,它会引发异常,但我宁愿在插入之前将其简单地转换为有效的内容。
最好的方法是什么?我似乎无法找到PL / pgSQL的正则表达式替换函数。有一个text_replace
函数,但这只会折叠最多两个空格到一个(意味着三个连续的空格将折叠为两个)。一遍又一遍地调用此功能并不理想。
答案 0 :(得分:2)
PostgreSQL有一个REGEXP_REPLACE函数,您应该可以使用它。
DECLARE
result VARCHAR2(255);
BEGIN
result := REGEXP_REPLACE(subject, $$ {2,}$$, $$ $$, 'g');
END;
答案 1 :(得分:0)
您可以使用plperl,并使用perl正则表达式。
升级很好,但是plperl可以让你再刮一点。