Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Ví dụ về MySQL SOUNDEX ()

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      |
+------------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tạo một chỉ mục trên một bảng sản xuất MySQL khổng lồ mà không cần khóa bảng

  2. Cân bằng tải với ProxySQL cho Percona XtraDB Cluster

  3. Cách tính tiền ký quỹ trong MySQL

  4. Cách thực hiện xếp hạng theo nhóm trong MySQL

  5. Quyền của người dùng MySQL