1 步 regexp_replace 而不是两步

1 step regexp_replace instead of two steps

select replace(REGEXP_REPLACE(lower('new york, ,ny usa '),r'[ ]+', ' '),', ,',',') c2

returns 'new york,ny usa '

如何一步完成。 即删除 , 之间的所有白色 space ,并将结果 , 替换为 ,

您可以将 REGEXP_REPLACE 与捕获组一起使用:

SELECT REGEXP_REPLACE('new york,      ,ny usa ', r'([^,]+)[, ]+(\w+) (\w+)', r', ');

这是一个正则表达式 demo,显示模式和替换逻辑正在运行。

可以使用;

([^,]+,)[, ]+

查看Demo

([^,]+,) - 返回的捕获组 </code> 匹配任何直到下一次出现的逗号并捕获逗号。</p> <p><code>[, ]+ - 排除空格和逗号。在下一次出现 [[:alpha:]] 个字符

时匹配失败