如何解决如何通过忽略特殊字符来比较两列?
我正在比较不同表中的两列以获取匹配的记录。这些表除了名字和姓氏之外没有别的唯一键。但是,如果tableA具有Aa'aa而tableB具有Aaaa,则无法获得正确的输出。有人可以通过忽略特殊字符/任何其他替代方法来使它们匹配来建议如何进行比较吗?
SELECT * FROM TableA A where EXISTS
(SELECT '' FROM TableB B
WHERE
TRIM(A.namef) = TRIM(B.namef)
AND TRIM(A.namel) = TRIM(B.namel)
)
-谢谢
解决方法
您可以尝试使用正则表达式。假设您只想比较字母和数字字符,则可以执行以下操作:
where
regexp_replace(a.namef,'\W','','g') = regexp_replace(b.namef,'g')
and regexp_replace(a.namel,'g') = regexp_replace(b.namel,'g')
基本上,这会在比较它们之前从每个字符串中删除非单词字符-单词字符定义为字母或数字,再加上下划线字符。
,如果您只想删除字母以外的任何东西,请使用:
regexp_replace(a.namef,'[^A-Za-z]','g')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。