gpt4 book ai didi

string - Oracle SQL 中的高级字符串比较

转载 作者:行者123 更新时间:2023-12-04 16:24:45 37 4
gpt4 key购买 nike

我想知道在 Oracle SQL 中是否有一种方法可以比较两个字符串的相似性而不是 =like .例如,SQL Server 有一个函数 difference(str1, str2)比较两个字符串并给出相似性评级(0 到 4)。不完全是我想要的,但这仍然会非常有帮助。

我特别希望功能或方法能够:

  • 逐个字符比较字符串(返回完全匹配的数量)
  • 告诉一个字符串中有多少个字符,但在错误的地方

  • 主要用途是用于包含数字(ID、电话号码等)的相同长度的字符串。出于我的目的,我将使用它来查找可能已调换字母/数字的匹配项。 Soundex(string)适用于 alpha 字符串,但似乎忽略了数字(有充分的理由)。

    我没有自己创建函数的特权,但是如果有人知道这样做的方法,我会很想听听。比较字符到字符的一种解决方案(仅当您知道最大字符数时才有效)是:
     --For char-to-char counts
    Decode(substr(ID1,1,1), substr(ID2,1,1), 1, 0) +
    Decode(substr(ID1,2,1), substr(ID2,2,1), 1, 0) +
    [...]
    Decode(substr(ID1,N,1), substr(ID2,N,1), 1, 0)

    但这与你所能得到的一样不优雅。

    任何帮助将不胜感激。

    最佳答案

    听起来您正在寻找 UTL_MATCH package

    SELECT utl_match.edit_distance( string1, string2 )
    FROM dual

    告诉您将 string1 转换为 string2 所需的编辑次数
    SQL> select utl_match.edit_distance( 'Bear', 'berry' ) from dual;

    UTL_MATCH.EDIT_DISTANCE('BEAR','BERRY')
    ---------------------------------------
    3

    还有几个相似函数 EDIT_DISTANCE_SIMILARITYJARO_WINKLER_SIMILARITY给出 0 到 100 之间的相似度分数,让您了解字符串的相似程度。

    关于string - Oracle SQL 中的高级字符串比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9398794/

    37 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com