关于字符串匹配的一些问题

limsim 2015-10-30 08:51:40
当初数据库的某张表的公司信息录入时不够规范,name字段出现了【广东省微生物所】和【广东微生物研究所】这样的相似公司名情况,而这两个公司又都有相关的委托单产生。
现在想对这些数据整理,想找出是否还有类似的名字相似,但实际上是同一家公司,可以合并为一个的该字段的数据,请教一下各位大神有什么好的方法建议一下。ORACLE刚刚上手,懂得不多,请多多指教!
...全文
345 8 打赏 收藏 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
BenChiM888 2015-11-20
  • 打赏
  • 举报
回复
关键字 确定关键字 模糊查询 数据清洗
limsim 2015-11-18
  • 打赏
  • 举报
回复
引用 6 楼 chengccy 的回复:
[quote=引用 5 楼 u013128938 的回复:] [quote=引用 4 楼 chengccy 的回复:] oracle 10g 可以使用UTL_MATCH.EDIT_DISTANCE_SIMILARIT 函数来获取2个文本的相似度; 参考oracle官方文档:http://docs.oracle.com/cd/E14072_01/appdev.112/e10577/u_match.htm#CHDGDIDJ
引用 4 楼 chengccy 的回复:
oracle 10g 可以使用UTL_MATCH.EDIT_DISTANCE_SIMILARIT 函数来获取2个文本的相似度; 参考oracle官方文档:http://docs.oracle.com/cd/E14072_01/appdev.112/e10577/u_match.htm#CHDGDIDJ
想找出是否还有类似的名字相似,但实际上是同一家公司,可以合并为一个的该字段的数据。这个函数好像是要已经知道这两个文本,才能进行匹配。我现在的情况是不知道这些字段,想找出来。[/quote] 这样的话只能写个procedure咯,先构建一个中间表A,然后用游标遍历业务表,用上面这个函数判断表A中是否存在相似度>X的记录,有就continue,没有就写入到表A,这样做的话会有点慢。[/quote] 可不可以提供一些相关的语句给我参考一下,谢谢!
limsim 2015-10-30
  • 打赏
  • 举报
回复
引用 4 楼 chengccy 的回复:
oracle 10g 可以使用UTL_MATCH.EDIT_DISTANCE_SIMILARIT 函数来获取2个文本的相似度; 参考oracle官方文档:http://docs.oracle.com/cd/E14072_01/appdev.112/e10577/u_match.htm#CHDGDIDJ
引用 4 楼 chengccy 的回复:
oracle 10g 可以使用UTL_MATCH.EDIT_DISTANCE_SIMILARIT 函数来获取2个文本的相似度; 参考oracle官方文档:http://docs.oracle.com/cd/E14072_01/appdev.112/e10577/u_match.htm#CHDGDIDJ
想找出是否还有类似的名字相似,但实际上是同一家公司,可以合并为一个的该字段的数据。这个函数好像是要已经知道这两个文本,才能进行匹配。我现在的情况是不知道这些字段,想找出来。
chengccy 2015-10-30
  • 打赏
  • 举报
回复
oracle 10g 可以使用UTL_MATCH.EDIT_DISTANCE_SIMILARIT 函数来获取2个文本的相似度; 参考oracle官方文档:http://docs.oracle.com/cd/E14072_01/appdev.112/e10577/u_match.htm#CHDGDIDJ
beyon2008 2015-10-30
  • 打赏
  • 举报
回复
根据实际数据的规则来梳理,多看下数据找出规则来,然后根据规则update
limsim 2015-10-30
  • 打赏
  • 举报
回复
引用 1 楼 xu176032 的回复:
想要得到结果,就要从你的业务场景中梳理出来这些数据有什么共同点,比如你提供的这两条数据就可以用 like '广东省微生%'来提取,其他的相似数据,就需要你自己去总结有什么特点,然后才能提取处理。
这个表单里有接近10W条数据,里面可能有2,3W条是类似的,一个一个提取的话,很费时间精力...
xu176032 2015-10-30
  • 打赏
  • 举报
回复
想要得到结果,就要从你的业务场景中梳理出来这些数据有什么共同点,比如你提供的这两条数据就可以用 like '广东省微生%'来提取,其他的相似数据,就需要你自己去总结有什么特点,然后才能提取处理。
chengccy 2015-10-30
  • 打赏
  • 举报
回复
引用 5 楼 u013128938 的回复:
[quote=引用 4 楼 chengccy 的回复:] oracle 10g 可以使用UTL_MATCH.EDIT_DISTANCE_SIMILARIT 函数来获取2个文本的相似度; 参考oracle官方文档:http://docs.oracle.com/cd/E14072_01/appdev.112/e10577/u_match.htm#CHDGDIDJ
引用 4 楼 chengccy 的回复:
oracle 10g 可以使用UTL_MATCH.EDIT_DISTANCE_SIMILARIT 函数来获取2个文本的相似度; 参考oracle官方文档:http://docs.oracle.com/cd/E14072_01/appdev.112/e10577/u_match.htm#CHDGDIDJ
想找出是否还有类似的名字相似,但实际上是同一家公司,可以合并为一个的该字段的数据。这个函数好像是要已经知道这两个文本,才能进行匹配。我现在的情况是不知道这些字段,想找出来。[/quote] 这样的话只能写个procedure咯,先构建一个中间表A,然后用游标遍历业务表,用上面这个函数判断表A中是否存在相似度>X的记录,有就continue,没有就写入到表A,这样做的话会有点慢。

3,499

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧