使用 SQL 按字母顺序重新排列字符串中的字符 [关闭]
Posted
技术标签:
【中文标题】使用 SQL 按字母顺序重新排列字符串中的字符 [关闭]【英文标题】:Rearrange the characters in a string alphabetically using SQL [closed] 【发布时间】:2013-10-30 16:29:18 【问题描述】:我正在寻找一个字符串字段并将字符重新排列成字母顺序。例如,如果它是一个名称字段并且名称是 MICHAEL SMITH,它将更改为 ACEHHIILMMST。
主要目的是在名称之类的字段中查找重复项,其中有人可能打错字并输入名称为 MICHEAL SMITH 或 MICHAEL SMTIH。我想到的另一个选择是为每个字母(1-26)分配一个数字值,然后如果这些值的总和与名称字段的长度相同,则将其视为重复。问题是我不知道如何对字符串字段中的数字求和。
另外,我使用的是 Oracle SQL,因此这些功能将基于可用的功能。
有什么想法或至少可以从哪里开始?
编辑
我不是要询问如何做到这一点的代码,我想问更多是否可能,如果可能,我的起点是什么(函数类型、技术等)
【问题讨论】:
要求代码的问题必须表明对所解决问题的最低理解。包括尝试的解决方案,以及它们为什么不起作用。 您会考虑使用存储函数进行重新排列吗? 我不是要代码,我要的是起点。我对 SQL 的了解仅限于运行更基本的查询,因此我并不总是确定它可以做什么,不能做什么。 想到了 SOUNDEX 函数,但 Joe 中提到的 utl_match 可能更好。 【参考方案1】:检查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
【讨论】:
谢谢乔,这似乎是一种我不知道的更简单的方法。以上是关于使用 SQL 按字母顺序重新排列字符串中的字符 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章