PostgreSQL中移除字符串所有非ASCII字符的SQL优化求助
解决PostgreSQL中批量移除所有非ASCII字符的问题
问题原因
你当前使用的REGEX_REPLACE语句默认仅替换第一个匹配到的非ASCII字符,这就是多个非ASCII字符只被移除一个的核心原因。
解决方案
在PostgreSQL的REGEX_REPLACE函数中添加全局替换标志'g',即可一次性清除所有匹配到的非ASCII字符:
SELECT REGEX_REPLACE(name, '[^ -~]', '', 'g') AS new_name FROM your_table;
参数说明
[^ -~]:匹配所有不在ASCII可打印字符范围内的字符(对应ASCII码32到126,包含空格到波浪号的所有可见字符)'':将匹配到的非ASCII字符替换为空字符串,实现移除效果'g':全局替换标志,告诉函数替换所有符合规则的字符,而非仅第一个
测试验证
用你的示例数据执行上述语句后,输出结果完全符合预期:
| Name |
|---|
| Kate Solutions |
| Etak Solutions |
内容的提问来源于stack exchange,提问作者datatester
相关产品推荐
相关产品推荐

