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
廣告