SOUNDEX

接受一个 VARCHAR 实参并返回一个四字符代码,该代码可以将该实参与其他 SOUNDEX 编码的字符串进行比较,这些字符串的英语拼写不同,但在语音上相似。SOUNDEX 实施由 Robert C. Russell 和 Margaret King Odell 开发的算法,并在 计算机编程艺术(第 3 卷)中进行了介绍。

行为类型

不可变

语法

SOUNDEX ( string-expression )

参数

string-expression
要编码的 VARCHAR 表达式。

Soundex 编码算法

Vertica 使用以下 Soundex 编码算法,该算法符合大多数 SQL 实施策略:

  1. 保存第一个字母。将所有出现的 a、e、i、o、u、y、h、w 映射到零 (0)。

  2. 使用数字替换所有辅音字母(包括第一个字母):

    • b、f、p、v → 1

    • c、g、j、k、q、s、x、z → 2

    • d、t → 3

    • l → 4

    • m、n → 5

    • r → 6

  3. 使用一位数字替换所有相邻的相同数字,然后移除所有零 (0) 数字

  4. 如果保存的字母的数字与生成的第一个数字相同,则移除数字(保留字母)。

  5. 如果结果包含的数字少于 3 个,则附加 3 个零。移除除第一个字母及其后面 3 个数字以外的所有内容。

示例

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
 ...

另请参阅

SOUNDEX_MATCHES