MySQL SOUNDEX() 函数



MySQL 的SOUNDEX()函数返回给定字符串的语音表示。

它用于根据两个字符串的发音或读音而不是实际拼写来比较和匹配它们的相似性。该函数根据每个字符的发音为字符串的每个字符分配一个代码,然后返回一个表示字符串整体发音的四字符代码。

我们使用以下方法比较两个字符串的发音:SOUNDEX(expr1) = SOUNDEX(expr2),它检查两个字符串的 SOUNDEX 代码是否相等。如果 SOUNDEX 代码匹配,则返回1,否则返回0

语法

以下是 MySQL SOUNDEX() 函数的语法:

SOUNDEX(str)

参数

此函数将字符串值作为参数。

返回值

此函数返回一个四字符代码,表示输入字符串的语音声音。

示例

在以下示例中,SOUNDEX() 函数将字符串“Hello how are you”的语音表示返回为“H460”:

SELECT SOUNDEX('Hello how are you');

以下是上述代码的输出:

SOUNDEX('Hello how are you')
H460

示例

如果将数值作为参数传递,则该函数将返回空字符串:

SELECT SOUNDEX(56789);

上述代码的输出如下所示:

SOUNDEX(56789)

示例

如果将空字符串作为参数传递,则该函数将返回空字符串:

SELECT SOUNDEX('');

获得的输出如下:

SOUNDEX('')

示例

当将 NULL 值作为参数传递给此函数时,它将返回 NULL:

SELECT SOUNDEX(NULL);

获得的输出如下:

SOUNDEX(NULL)
0x

如果禁用--binary-as-hex值,则上述查询的结果将如下所示:

SELECT SOUNDEX(NULL);

产生的结果如下所示:

SOUNDEX(NULL)
NULL

示例

让我们创建一个名为“SALES_TABLE”的表,并使用 CREATE 和 INSERT 语句向其中插入记录,如下所示:

CREATE TABLE SALES_TABLE (
   ProductName VARCHAR(255),
   CustomerName VARCHAR(255),
   Price FLOAT,
   Location VARCHAR(255)
);

现在,让我们使用 INSERT 语句向其中插入记录:

INSERT INTO SALES_TABLE VALUES
('Key-Board', 'Raja', 900.56, 'Hyderabad'),
('Earphones', 'Roja', 2000.33, 'Vishakhapatnam'),
('Mouse', 'Puja', 1500.66, 'Vijayawada'),
('Mobile', 'Vanaja' , 9000.95, 'Chennai'),
('Headset', 'Jalaja' , 6000.99, 'Goa');

获得的 SALES_TABLE 如下所示:

ProductName CustomerName Price Location
Key-Board Raja 900.56 Hyderabad
Earphones Roja 2000.33 Vishakhapatnam
Mouse Puja 1500.66 Vijayawada
Mobile Vanaja 9000.95 Chennai
Headset Jalaja 6000.99 Goa

以下查询显示 SALES_TABLE 的“CustomerName”列的 soundex 值:

SELECT ProductName, CustomerName, Price, Location, SOUNDEX(CustomerName) as RESULT
FROM SALES_TABLE;

执行上述代码后,我们将获得以下输出:

ProductName CustomerName Price Location 结果
Key-Board Raja 900.56 Hyderabad R200
Earphones Roja 2000.33 Vishakhapatnam R200
Mouse Puja 1500.66 Vijayawada P200
Mobile Vanaja 9000.95 Chennai V520
Headset Jalaja 6000.99 Goa J420

示例

假设我们使用以下查询创建了另一个名为 ANIMALS 的表,其中包含 4 列:

CREATE TABLE ANIMALS (
   id INT NOT NULL AUTO_INCREMENT,
   animal1 VARCHAR(50) NOT NULL,
   animal2 VARCHAR(50) NOT NULL,
   soundex_match INT NOT NULL,
   PRIMARY KEY (id)
);

现在,让我们使用 INSERT 语句向其中插入记录:

INSERT INTO ANIMALS (animal1, animal2, soundex_match) VALUES 
('cat', 'dog', SOUNDEX('cat') = SOUNDEX('dog')),
('elephant', 'eliphant', SOUNDEX('elephant') = SOUNDEX('eliphant')),
('bear', 'bare', SOUNDEX('bear') = SOUNDEX('bare')),
('snake', 'snail', SOUNDEX('snake') = SOUNDEX('snail'));

“soundex_match”列用于存储两个动物名称之间 SOUNDEX 比较的结果。如果 SOUNDEX 代码匹配,则结果为1,否则为0

id animal1 animal2 soundex_match
1 cat dog 0
2 elephant eliphant 1
3 bear bare 1
4 snake snail 0
mysql-soundex-function.htm
广告