如何修改SQL查询,移除insuranceName中的"Non Medicare"字符串?
解决方案:替换保险名称中的"Non Medicare"字符串
直接在查询返回的insuranceName外层包裹REPLACE函数即可,修改后的SQL片段如下:
/*Pulling Primary Insurance Name and setting any data with a '0' as self-pay*/ IF(edi_invoice.PrimaryInsId = 0, 'Self-Pay', REPLACE((SELECT insurance.insuranceName FROM insurance WHERE insID = edi_invoice.PrimaryInsid AND edi_invoice.PrimaryInsid <> 0), 'Non Medicare ', '')) AS prim_payer_name,
关键说明
REPLACE函数的用法是REPLACE(原字符串, 要替换的子串, 替换后的内容),这里我们把查询到的保险名称里的"Non Medicare "(注意末尾的空格)替换为空字符串,完全匹配你的需求。- 该修改仅在查询结果中生效,不会修改数据库中
insurance表的原始数据,满足你仅做数据提取的场景要求。
可选优化:处理大小写不固定的情况
如果存在大小写不同的变体(比如"non medicare"、"NON MEDICARE"),可以用正则替换函数(不同数据库语法略有区别):
- MySQL/MariaDB:使用
REGEXP_REPLACEREGEXP_REPLACE(insurance.insuranceName, '[Nn]on [Mm]edicare ', '') - PostgreSQL:同样支持
REGEXP_REPLACE - SQL Server:可以结合
LOWER和REPLACE,或使用自定义正则处理逻辑
效果验证
修改后查询输出将与你的期望完全一致:
- MEDICARE - ASC
- BCBS - ASC
- UHC Adv UB
- HEALTHCHOICE
内容的提问来源于stack exchange,提问作者oeohfppe
相关产品推荐
相关产品推荐

