Một trong nhiều hàm chuỗi MySQL là SOUNDEX()
hàm số. Hàm này trả về một chuỗi Soundex từ một chuỗi đã cho. Nếu hai từ phát ra âm thanh giống nhau, chúng phải có cùng chuỗi Soundex. Nếu hai từ nghe giống nhau nhưng không hoàn toàn giống nhau, thì chuỗi Soundex của chúng có thể trông giống nhau nhưng không hoàn toàn giống nhau.
Bài viết này chứa nhiều ví dụ về Soundex để minh họa cách SOUNDEX()
hàm hoạt động trong MySQL.
Cú pháp
Đầu tiên, hãy xem cú pháp:
SOUNDEX(str)
Ở đâu str
là chuỗi mà bạn yêu cầu chuỗi Soundex.
Ví dụ
Dưới đây là một ví dụ về cách lấy chuỗi Soundex từ một chuỗi:
SELECT SOUNDEX('Sure');
Kết quả:
+-----------------+ | SOUNDEX('Sure') | +-----------------+ | S600 | +-----------------+
Vì vậy, trong trường hợp này, từ Sure
có chuỗi Soundex là S600
.
Ví dụ - Kết hợp Chính xác
Dưới đây là một ví dụ về việc hai từ nghe giống nhau (hoặc rất giống nhau) và do đó, chúng chia sẻ cùng một chuỗi Soundex:
SELECT SOUNDEX('Sure') AS Sure, SOUNDEX('Shore') AS Shore;
Kết quả:
+------+-------+ | Sure | Shore | +------+-------+ | S600 | S600 | +------+-------+
Dưới đây là một số ví dụ đối sánh chính xác hơn:
SELECT SOUNDEX('Dam') AS Dam, SOUNDEX('Damn') AS Damn, SOUNDEX('Too') AS Too, SOUNDEX('Two') AS Two;
Kết quả:
+------+------+------+------+ | Dam | Damn | Too | Two | +------+------+------+------+ | D500 | D500 | T000 | T000 | +------+------+------+------+
Ví dụ - Không phù hợp
Dưới đây là một ví dụ về việc hai từ nghe không giống nhau và do đó, chúng có các chuỗi Soundex khác nhau:
SELECT SOUNDEX('Water') AS Water, SOUNDEX('Coffee') AS Coffee;
Kết quả:
+-------+--------+ | Water | Coffee | +-------+--------+ | W360 | C100 | +-------+--------+
Như bạn có thể thấy, chuỗi Soundex hoàn toàn khác nhau đối với hai từ này.
Ví dụ - Cách viết khác nhau
Dưới đây là ví dụ về hai từ có cách viết khác nhau (tùy thuộc vào quốc gia bạn đến từ):
SELECT SOUNDEX('Color') AS 'Color', SOUNDEX('Colour') AS 'Colour';
Kết quả:
+-------+--------+ | Color | Colour | +-------+--------+ | C460 | C460 | +-------+--------+
Vì vậy, chúng ta có thể thấy rằng những từ như vậy sẽ chia sẻ cùng một chuỗi Soundex (miễn là chúng được phát âm theo cùng một cách).
Ví dụ - Âm thanh giống nhau, âm thanh khác nhau
Có những trường hợp các từ phát ra âm thanh giống nhau, nhưng chúng có các chuỗi Soundex khác nhau. Lý do phổ biến nhất cho điều này là chúng bắt đầu bằng một chữ cái khác, một trong số đó là chữ cái im lặng. Bạn có thể nhận thấy từ các ví dụ trước rằng chuỗi Soundex bắt đầu bằng chữ cái đầu tiên của chuỗi.
Do đó, nếu bạn có hai từ được phát âm giống hệt nhau, nhưng chúng bắt đầu bằng một chữ cái khác, chúng sẽ có một chuỗi Soundex khác.
Dưới đây là một số ví dụ:
SELECT SOUNDEX('Hole') AS 'Hole', SOUNDEX('Whole') AS 'Whole', SOUNDEX('Our') AS Our, SOUNDEX('Hour') AS Hour;
Kết quả:
+------+-------+------+------+ | Hole | Whole | Our | Hour | +------+-------+------+------+ | H400 | W400 | O600 | H600 | +------+-------+------+------+
Các cặp trong ví dụ này có các chuỗi Soundex khác nhau chỉ vì chữ cái đầu tiên của chúng khác nhau.
Ví dụ - Soundex trong Truy vấn Cơ sở dữ liệu
Đây là một ví dụ về việc sử dụng SOUNDEX()
trong một truy vấn cơ sở dữ liệu. Trong trường hợp này, chúng tôi đang tìm kiếm bất kỳ bản ghi nào giống như “Ay See Dee Ci”:
SELECT ArtistName FROM Artists WHERE SOUNDEX(ArtistName) = SOUNDEX('Ay See Dee Ci');
Kết quả:
+------------+ | ArtistName | +------------+ | AC/DC | +------------+
Vì vậy, AC/DC
dường như có cùng mã Soundex với Ay See Dee Ci
(ít nhất là khi sử dụng MySQL) Chỉ cần chắc chắn, đây là mã Soundex cho cả hai chuỗi đó:
SELECT SOUNDEX('AC/DC') AS 'AC/DC', SOUNDEX('Ay See Dee Ci') AS 'Ay See Dee Ci';
Kết quả:
+-------+---------------+ | AC/DC | Ay See Dee Ci | +-------+---------------+ | A232 | A232 | +-------+---------------+
Một giải pháp thay thế:SOUNDS LIKE
Một truy vấn thay thế có thể đã được tạo bằng SOUNDS LIKE
thay vì SOUNDEX()
hàm số. Như thế này:
SELECT ArtistName FROM Artists WHERE ArtistName SOUNDS LIKE 'Ay See Dee Ci';
Kết quả:
+------------+ | ArtistName | +------------+ | AC/DC | +------------+