使用SQL按字母顺序重新排列字符串中的字符

时间:2013-10-30 16:29:18

标签: sql oracle plsql toad

我希望获取一个字符串字段并将字符重新排列为字母顺序。例如,如果它是名称字段且名称为MICHAEL SMITH,则它将更改为ACEHHIILMMST。

主要目的是在名称等字段中查找重复项,其中某人可能会输入错字并将其命名为MICHEAL SMITH或MICHAEL SMTIH。我想到的另一个选择是为每个字母分配一个数字值(1-26),然后如果这些值的总和和名称字段的长度相同,则认为它是重复的。问题是我不知道如何在字符串字段中总结数字。

此外,我正在使用Oracle SQL,因此功能将基于可用的功能。

任何想法或至少可以开始的地方?

修改

我不是要求代码如何执行此操作,我要求更多是否有可能,如果可能的话,我的起点是什么(函数类型,技术等)

1 个答案:

答案 0 :(得分:4)

检查utl_match。它可以用来衡量两个字符串的相似性。

select utl_match.edit_distance_similarity('MICHAEL SMITH','MICHEAL SMITH') from dual
85

select utl_match.edit_distance_similarity('MICHAEL SMITH','MICHELLE SMITH') from dual
79

select utl_match.edit_distance_similarity('MICHAEL SMITH','FRANKIE JONES') from dual
8