Redshift中替换非数字间点为逗号的正则适配问题求助
解决方案
Redshift采用POSIX标准的正则表达式实现,与PostgreSQL的正则处理逻辑存在差异,你需要调整正则表达式的写法:
使用以下查询语句:
SELECT full_name, REGEXP_REPLACE(full_name, '([^0-9])\.([^0-9])', '\1,\2', 'g') as full_name_new FROM your_table_name;
说明:
[^0-9]:明确匹配非数字字符,替代原表达式中\D的写法(Redshift对\D的支持存在兼容性问题,用[^0-9]更可靠)([^0-9])\.([^0-9]):精准捕获点号前后的非数字字符,确保只替换位于非数字之间的目标点'g':全局替换标志,会替换字符串中所有符合条件的点(若存在多个匹配场景)
测试你的样本数据后,会得到预期结果:
full_name full_name_new LISADOR. COMPRIMIDO (16UN) LISADOR, COMPRIMIDO (16UN) ALOPURINOL 1.0MG. COMPRIMIDO (30UN) ALOPURINOL 1.0MG, COMPRIMIDO (30UN) RILAN 40MG/ML. SOLUCAO NASAL (1UN DE 13ML) RILAN 40MG/ML, SOLUCAO NASAL (1UN DE 13ML) DORENE 1.0MG. CAPSULA (30UN) DORENE 1.0MG, CAPSULA (30UN)
内容的提问来源于stack exchange,提问作者Mariana
相关产品推荐
相关产品推荐

