为什么 SQL 服务器的 SOUNDEX 给我不一致的结果?
Why is SQL Server's SOUNDEX giving me inconsistent results?
有人可以提供一些见解,说明为什么 SOUNDEX 在某些字符为大写与小写时给出不同的结果吗?根据我在网上阅读的内容,SOUNDEX 忽略了大小写,但我得到了不同的结果,无法理解会导致差异的原因。我不能用像 GUTTHRE
.
这样的词来模仿这个例子
Query Result
select SOUNDEX('JESCHKE') J200 <-- 200
select SOUNDEX(LOWER('JESCHKE')) J220
select SOUNDEX('Jeschke') J220
select SOUNDEX('jeschke') J220
select SOUNDEX('JESChKE') J220
select SOUNDEX('JESCHke') J200 <-- for some reason capitalizing 'H' changes the result to 200
select SOUNDEX('jescHke') J200 <-- 200
知道值不匹配的原因吗?
所以 wiki 状态:
"two letters with the same number separated by 'h' or 'w' are coded as
a single number"
所以我认为当您使用小写字母“h”时这适用,因此 S 被编码为 2,所有其他字符将编码为 2 并被忽略,如下所示:
If two or more letters with the same number are adjacent in the
original name (before step 1), only retain the first letter
我怀疑是因为 H 是大写的,所以它重置了这条规则,所以后面的 k 被编码为另一个 2。
有人可以提供一些见解,说明为什么 SOUNDEX 在某些字符为大写与小写时给出不同的结果吗?根据我在网上阅读的内容,SOUNDEX 忽略了大小写,但我得到了不同的结果,无法理解会导致差异的原因。我不能用像 GUTTHRE
.
Query Result
select SOUNDEX('JESCHKE') J200 <-- 200
select SOUNDEX(LOWER('JESCHKE')) J220
select SOUNDEX('Jeschke') J220
select SOUNDEX('jeschke') J220
select SOUNDEX('JESChKE') J220
select SOUNDEX('JESCHke') J200 <-- for some reason capitalizing 'H' changes the result to 200
select SOUNDEX('jescHke') J200 <-- 200
知道值不匹配的原因吗?
所以 wiki 状态:
"two letters with the same number separated by 'h' or 'w' are coded as a single number"
所以我认为当您使用小写字母“h”时这适用,因此 S 被编码为 2,所有其他字符将编码为 2 并被忽略,如下所示:
If two or more letters with the same number are adjacent in the original name (before step 1), only retain the first letter
我怀疑是因为 H 是大写的,所以它重置了这条规则,所以后面的 k 被编码为另一个 2。