Oracle SOUNDEX() 函数使用指南
Oracle SOUNDEX()
是一个内置函数,它返回一个表示给定英语字符串发音的字符串。
Soundex 是一种语音算法。如果两个单词听起来相同,则它们应具有相同的 Soundex 字符串。
Oracle SOUNDEX()
语法
这里是 Oracle SOUNDEX()
函数的语法:
SOUNDEX(str)
参数
str
-
必需的。它可以是
CHAR
,VARCHAR2
,NCHAR
, 或者NVARCHAR2
中的任何一种数据类型。
返回值
Oracle SOUNDEX()
函数返回一个表示给定英语字符串发音的字符串。
如果参数为 NULL
或者空字符串时, SOUNDEX()
将返回 NULL
。
Soundex 算法
Soundex 语音表示在 Donald E. Knuth 的 The Art of Computer Programming, Volume 3: Sorting and Searching 中定义如下:
-
保留字符串的第一个字母并删除所有其他出现的以下字母:a、e、h、i、o、u、w、y。
-
将数字分配给剩余的字母(在第一个字母之后),如下所示:
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 之前),或者除了任何中间的 h 和 w 之外相邻,则保留第一个字母并省略所有具有相同数字的相邻字母的其余部分。
-
返回用 0 填充的前四个字节。
Oracle SOUNDEX()
示例
这里有几个展示了 Oracle SOUNDEX()
函数用法的示例。
基本用法
SELECT
SOUNDEX('Hello'),
SOUNDEX('World')
FROM dual;
输出:
SOUNDEX('HELLO') SOUNDEX('WORLD')
___________________ ___________________
H400 W643
读音相同
如果两个单词听起来相同,则它们应具有相同的 Soundex 字符串。
SELECT
SOUNDEX('Dam') "Dam",
SOUNDEX('Damn') "Damn"
FROM dual;
输出:
Dam Damn
_______ _______
D500 D500
在本示例中,Dam 和 Damn 的读音相同,因此它们返回了相同的字符串。 让我们再看几个读音相同的单词的示例:
SELECT
SOUNDEX('Too') "Too",
SOUNDEX('Two') "Two",
SOUNDEX('Color') "Color",
SOUNDEX('Colour') "Colour"
FROM dual;
输出:
Too Two Color Colour
_______ _______ ________ _________
T000 T000 C460 C460
NULL 参数
如果参数为 NULL
或者空字符串时, SOUNDEX()
将返回 NULL
。
SET NULL 'NULL';
SELECT
SOUNDEX(NULL),
SOUNDEX('')
FROM dual;
输出:
SOUNDEX(NULL) SOUNDEX('')
________________ ______________
NULL NULL
在本示例中,我们使用 SET NULL 'NULL';
语句将 NULL
值显示为 'NULL'
字符串。
结论
Oracle SOUNDEX()
是一个内置函数,它返回一个表示给定字符串发音的 soundex 字符串。