Redshift中移除药物名后关联的数字及相连非数字字符
问题:移除药物名称后关联的剂量字符
原始表数据:
molecule_name DOXICICLINA 100MG CAFEINA 50MG E DIPIRONA 300MG E CITRATO DE ORFENADRINA 35MG DIOSMINA 450MG E HESPERIDINA 50MG
期望处理结果:
new_molecule_name DOXICICLINA CAFEINA E DIPIRONA E CITRATO DE ORFENADRINA DIOSMINA E HESPERIDINA
尝试过的正则语句:
regexp_replace(molecule_name,'([0-9.])','') as new_molecule_name
执行后残留了与数字关联的非数字字符(如MG):
DOXICICLINA MG CAFEINA MG E DIPIRONA MG E CITRATO DE ORFENADRINA MG DIOSMINA MG E HESPERIDINA MG
需调整正则,实现仅替换药物名称后紧跟的数字+关联非数字字符组合,保留其他内容。
解决方案
使用以下正则替换语句即可满足需求:
regexp_replace(molecule_name, '\s+\d+[A-Za-z]+', '', 'g') as new_molecule_name
正则规则说明:
\s+:匹配药物名称与剂量之间的一个或多个空格\d+:匹配剂量部分的一个或多个数字[A-Za-z]+:匹配剂量单位的一个或多个字母(如MG)'g':全局替换标志(确保替换所有符合条件的匹配项,部分数据库默认全局替换,可省略该参数)
如果需要更精准匹配大写剂量单位,可将字母匹配部分改为[A-Z]+:
regexp_replace(molecule_name, '\s+\d+[A-Z]+', '', 'g') as new_molecule_name
执行后即可得到仅保留药物名称和连接词的结果,完全符合预期。
内容的提问来源于stack exchange,提问作者Mariana
相关产品推荐
相关产品推荐

