SOUNDEX

说明

对输入字符串编码。

语法

soundex ::=

参数

character_expression

字符数据的字母数字表达式。character_expression 可以是常数、变量或列。

返回值

TEXT。计算出的SOUNDEX值。

注解

  • 读音相近的词有着相似的Soundex值。因此,Soundex值普遍被用来简化在数据库中查询某个只知道读音但不知道拼写的单词。

  • 在神通数据库系统中,Soundex函数被用来生成一个字符串的Soundex值。

  • Soundex值由4个字符构成,第一个字符为英文字母,后三个为数字。其编码规则如下:

    1. 保留字符串的第一个字符作为Soundex值的第一个字符。

    2. 忽略在其他位置出现的所有A、E、I、O、U、Y、H以及W。

    3. 将头一个字母之后的其他剩余字母以下列编码规则赋值。

      B、F、P、V 1

      C、G、J、K、Q、S、X、Z 2

      D、T 3

      L 4

      M、N 5

      R 6

    4. 如果具有同样编码的两个或多个字母在原字符串中相邻,或者仅仅以H和W分隔,则省略除头一个字母外的所有字母。

    5. 如果编码少于三个数字,则尾部增加适当的零,如果编码大于三个数字,则省略最右边的数字。最终将Soundex值转换成“字母、数字、数字、数字”的形式。

    6. 以下通过例子来说明如何计算Soundex值。

      字母的编码顺序和它们在字符串中出现的顺序一致

      HOLMES -> H452

      编码总是一个字母加三个数字,因此,编码结果大于4位的或小于四位,系统将通过省略最右边数字以及补零来保证编码的正确性。

      VONDERLEHR -> V536

      SHAW -> S000

      两个或大于两个同样的字母相邻只编码最开始的一个,忽略其他的字母。

      BALL -> B400

      具有同样编码的字母相邻时也只编码最开始的一个,忽略其他的字母。

      JACKSON -> J250

      如果具有同样编码的字母仅仅被H或W分隔,也只编码最开始的一个字母,忽略其他字母。

      BOOTHDAVIS -> B312

示例

示例1: 使用 SOUNDEX 计算字符串的 SOUNDEX 值

--  使用 SOUNDEX 计算字符串的 SOUNDEX 值
SELECT SOUNDEX('smith');
SOUNDEX(text)      |
-------------------
S530               |
总数目:1


SELECT SOUNDEX('smithj');
SOUNDEX(text)      |
-------------------
S532               |
总数目:1


SELECT SOUNDEX('asmithj');
SOUNDEX(text)      |
-------------------
A253               |
总数目:1