SOUNDEX
接受一个 VARCHAR 实参并返回一个四字符代码,该代码可以将该实参与其他 SOUNDEX 编码的字符串进行比较,这些字符串的英语拼写不同,但在语音上相似。SOUNDEX 实施由 Robert C. Russell 和 Margaret King Odell 开发的算法,并在 计算机编程艺术(第 3 卷)中进行了介绍。
行为类型
不可变语法
SOUNDEX ( string-expression )
参数
- string-expression
- 要编码的 VARCHAR 表达式。
Soundex 编码算法
Vertica 使用以下 Soundex 编码算法,该算法符合大多数 SQL 实施策略:
-
保存第一个字母。将所有出现的 a、e、i、o、u、y、h、w 映射到零 (0)。
-
使用数字替换所有辅音字母(包括第一个字母):
-
b、f、p、v → 1
-
c、g、j、k、q、s、x、z → 2
-
d、t → 3
-
l → 4
-
m、n → 5
-
r → 6
-
-
使用一位数字替换所有相邻的相同数字,然后移除所有零 (0) 数字
-
如果保存的字母的数字与生成的第一个数字相同,则移除数字(保留字母)。
-
如果结果包含的数字少于 3 个,则附加 3 个零。移除除第一个字母及其后面 3 个数字以外的所有内容。
注意
编码会忽略所有非字母字符,例如 O'Connor 中的撇号。示例
在 employee_dimension
表中查找与 Lee
发音相似的姓氏:
SELECT employee_last_name, employee_first_name, employee_state
FROM public.employee_dimension
WHERE SOUNDEX(employee_last_name) = SOUNDEX('Lee')
ORDER BY employee_state, employee_last_name, employee_first_name;
Lea | James | AZ
Li | Sam | AZ
Lee | Darlene | CA
Lee | Juanita | CA
Li | Amy | CA
Li | Barbara | CA
Li | Ben | CA
...