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