Soundex là một thuật toán phiên âm để lập chỉ mục tên theo âm thanh, như được phát âm trong tiếng Anh. Nó được phát triển và cấp bằng sáng chế vào năm 1918 và 1922.
Một trong những hàm có sẵn trong SQL Server là SOUNDEX()
, trả về mã Soundex cho một chuỗi nhất định.
Cú pháp
Cú pháp như sau:
SOUNDEX ( character_expression )
Trong đó character_expression
là từ hoặc chuỗi mà bạn muốn có mã Soundex. Đây có thể là một hằng số, một biến hoặc một cột.
SOUNDEX()
hàm nhạy cảm với đối chiếu và các hàm chuỗi có thể được lồng vào nhau.
Mã Soundex
Như đã đề cập, SOUNDEX()
hàm trả về mã Soundex cho chuỗi đã cho. Mã Soundex là một mã gồm bốn ký tự dựa trên âm thanh của chuỗi khi được nói. Dưới đây là ví dụ về mã Soundex:
S600
Đây là cách mã Soundex được tạo:
- Ký tự đầu tiên của mã là ký tự đầu tiên của chuỗi, được chuyển đổi thành chữ hoa. Vì vậy, trong ví dụ trên, chúng ta biết rằng chuỗi bắt đầu bằng chữ S (viết thường hoặc viết hoa).
- Các ký tự thứ hai đến thứ tư của mã là các số đại diện cho các chữ cái trong biểu thức.
- Các chữ cái A, E, I, O, U, H, W và Y bị bỏ qua trừ khi chúng là chữ cái đầu tiên của chuỗi.
- Các số 0 được thêm vào cuối nếu cần thiết để tạo ra mã bốn ký tự.
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ả:
S600
Vì vậy, chúng ta có thể thấy rằng từ Sure
có mã Soundex là S600
.
Ví dụ về hai từ phù hợp
Dưới đây là một ví dụ về trường hợp hai từ chia sẻ cùng một mã Soundex (vì chúng phát âm giống nhau):
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ụ về các từ không khớ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ó mã Soundex khác nhau:
SELECT SOUNDEX('Water') AS Water, SOUNDEX('Coffee') AS Coffee;
Kết quả:
Water Coffee ----- ------ W360 C100
Các từ có cách viết khác nhau
Một số từ có cách viết khác nhau tùy thuộc vào quốc gia bạn đến từ. Những từ như vậy sẽ dùng chung mã Soundex:
SELECT SOUNDEX('Flavor') AS 'Flavor', SOUNDEX('Flavour') AS 'Flavour';
Kết quả:
Flavor Flavour ------ ------- F416 F416
Cùng một âm thanh, mã Soundex khác nhau
Đôi khi, hai từ nghe giống nhau, nhưng chúng có mã 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 chữ cái sử dụng một chữ cái im lặng). Như đã đề cập, mã Soundex bắt đầu bằng chữ cái đầu tiên của chuỗi (được chuyển đổi thành chữ hoa). 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ã 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ó mã Soundex khác nhau chỉ vì chữ cái đầu tiên của chúng khác nhau.