Soundex函数在SQL Server中是如何工作的?

Soundex函数在SQL Server中是如何工作的?,sql,sql-server,soundex,Sql,Sql Server,Soundex,下面是SQL中Soundex代码的一个示例: SELECT SOUNDEX('Smith'), SOUNDEX('Smythe'); ----- ----- S530 S530 史密斯是如何变成S530的 在本例中,第一个数字是S,因为这是输入表达式中的第一个字符,但是剩余的三个数字是如何计算的?看看这个 代码的第一个字母对应于代码的第一个字母 名称代码的其余部分由三个从 单词的音节符合以下代码: 1=B,F,P,V 2=C,G,J,K,Q,S,X,Z 3=D,T 4=L 5=M,N

下面是SQL中Soundex代码的一个示例:

SELECT SOUNDEX('Smith'), SOUNDEX('Smythe');
----- ----- 
S530  S530  
史密斯是如何变成S530的

在本例中,第一个数字是
S
,因为这是输入表达式中的第一个字符,但是剩余的三个数字是如何计算的?

看看这个

代码的第一个字母对应于代码的第一个字母 名称代码的其余部分由三个从 单词的音节符合以下代码:

  • 1=B,F,P,V
  • 2=C,G,J,K,Q,S,X,Z
  • 3=D,T
  • 4=L
  • 5=M,N
  • 6=R
具有相同Soundex代码的双字母,A,E,I,O,U,H,W,Y, 有些前缀被忽略了

因此,对于Smith和Smyth,代码是这样创建的:

S  S   ->   S
m  m   ->   5
i  y   ->   0
t  t   ->   3
h  h   ->   0
   e   ->   -
什么是Soundex? 是:

一种语音算法,用于按发音为名称编制索引,在英语中发音为;由罗伯特·C·罗素和玛格丽特·金·奥德尔于1918年首次开发

它是如何工作的? Soundex有几种实现方式,但大多数都实现以下步骤:

  • 保留姓名的第一个字母,并删除所有其他元音和
    h,w

    | a,e,i,o,u,y,h,w |→ “”|
  • 用数字替换辅音,如下所示(在第一个字母之后):
    | b,f,p,v |→  1 |

    | c,g,j,k,q,s,x,z |→  2 |

    | d,t |→  3 |

    | l |→  4 |

    | m,n |→  5 |

    | r|→  6 |
  • 用单个值替换相同的相邻数字(如果它们在步骤1之前相邻):
    | M33 |→ M3 |
  • 剪切或用零填充或剪切生成4位结果:
    | M3 |→ M300 |

    | M34123 |→ M341 |
  • 以下是中的交互式演示:

    下面是一个使用SQL的演示

    在SQL Server中,经常与结合使用,用于计算结果数字中有多少是相同的(就像游戏策划†),更高的数字最接近匹配

    有哪些替代方案? 了解soundex的局限性和批评以及人们试图改进它的地方是很重要的,尤其是植根于英语发音和其他方面


    两者都将重点放在英语发音上,但为(即
    PH
    → <代码>F)

    菲尔·法因特写了一篇关于


    Soundex最常用于识别相似的名字,很难找到任何相似的昵称(即
    Robert
    → <代码>Rob或
    Bob
    )。根据a上的这个问题,您可以在匹配过程中结合对类似昵称的查找

    以下是一些常见昵称的免费列表:

    进一步阅读: