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

Cách hoạt động của SOUNDEX () trong MariaDB

Trong MariaDB, SOUNDEX() là một hàm chuỗi tích hợp trả về chuỗi Soundex từ một chuỗi đã cho.

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ế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.

Hàm chấp nhận một đối số:chuỗi để trả về chuỗi Soundex từ đó.

Cú pháp

Cú pháp như sau:

SOUNDEX(str)

Ở đâu str là chuỗi để trả về chuỗi Soundex.

Ví dụ

Đây là một ví dụ cơ bản:

SELECT SOUNDEX('Bat');

Kết quả:

+----------------+
| SOUNDEX('Bat') |
+----------------+
| B300           |
+----------------+

Dưới đây là một ví dụ khác so sánh chuỗi Soundex được trả về từ các từ phát âm tương tự nhưng khác nhau:

SELECT 
    SOUNDEX('Bat'),
    SOUNDEX('Cat'),
    SOUNDEX('Cap');

Kết quả:

+----------------+----------------+----------------+
| SOUNDEX('Bat') | SOUNDEX('Cat') | SOUNDEX('Cap') |
+----------------+----------------+----------------+
| B300           | C300           | C100           |
+----------------+----------------+----------------+

Và đây là một so sánh các từ nghe không giống nhau:

SELECT 
    SOUNDEX('Apartment'),
    SOUNDEX('Vehicle'),
    SOUNDEX('Groceries');

Kết quả:

+----------------------+--------------------+----------------------+
| SOUNDEX('Apartment') | SOUNDEX('Vehicle') | SOUNDEX('Groceries') |
+----------------------+--------------------+----------------------+
| A16353               | V240               | G6262                |
+----------------------+--------------------+----------------------+

Tôi nên đề cập rằng chức năng này thực hiện thuật toán Soundex ban đầu loại bỏ các nguyên âm đầu tiên và trùng lặp thứ hai. Điều này trái ngược với phiên bản nâng cao, loại bỏ các bản sao nguyên âm đầu tiên và thứ hai.

Ngoài ra, một chuỗi Soundex tiêu chuẩn dài bốn ký tự, nhưng SOUNDEX() của MariaDB hàm trả về một chuỗi dài tùy ý. Do đó kết quả trên bao gồm cả các chuỗi Soundex không chuẩn.

Để minh họa ý tôi muốn nói, đây là kết quả tôi nhận được khi sử dụng SOUNDEX() của Oracle chức năng để làm điều tương tự:

SELECT 
    SOUNDEX('Apartment'),
    SOUNDEX('Vehicle'),
    SOUNDEX('Groceries')
FROM DUAL;

Kết quả:

   SOUNDEX('APARTMENT')    SOUNDEX('VEHICLE')    SOUNDEX('GROCERIES') 
_______________________ _____________________ _______________________ 
A163                    V240                  G626                   

Kết hợp Chính xác

Dưới đây là ví dụ về các cặp từ có chuỗi Soundex phù hợp, mặc dù chúng là các từ khác nhau, có nghĩa khác nhau:

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ơ sở dữ liệu

Dưới đây là ví dụ về cách lấy chuỗi Soundex từ truy vấn cơ sở dữ liệu:

SELECT 
    PetName, 
    SOUNDEX(PetName)
FROM Pets;

Kết quả:

+---------+------------------+
| PetName | SOUNDEX(PetName) |
+---------+------------------+
| Fluffy  | F410             |
| Fetch   | F320             |
| Scratch | S632             |
| Wag     | W200             |
| Tweet   | T000             |
| Fluffy  | F410             |
| Bark    | B620             |
| Meow    | M000             |
+---------+------------------+

Chúng tôi cũng có thể sử dụng SOUNDEX() trong một WHERE mệnh đề để chỉ trả lại những hàng giống như một từ đã cho:

SELECT 
    PetName, 
    SOUNDEX(PetName),
    SOUNDEX('Wagg')
FROM Pets
WHERE SOUNDEX(PetName) = SOUNDEX('Wagg');

Kết quả:

+---------+------------------+-----------------+
| PetName | SOUNDEX(PetName) | SOUNDEX('Wagg') |
+---------+------------------+-----------------+
| Wag     | W200             | W200            |
+---------+------------------+-----------------+

Tuy nhiên, bạn có thể thích sử dụng SOUNDS LIKE thay vào đó, đó là một cách ngắn gọn hơn để làm điều tương tự.

Chuỗi trống

Dưới đây là những gì sẽ xảy ra khi một chuỗi trống được chuyển cho mỗi đối số nhất định:

SELECT SOUNDEX('');

Kết quả:

+-------------+
| SOUNDEX('') |
+-------------+
|             |
+-------------+

Đối số rỗng

Chuyển null trả về null :

SELECT SOUNDEX(null);

Kết quả:

+---------------+
| SOUNDEX(null) |
+---------------+
| NULL          |
+---------------+

Thiếu đối số

Đang gọi SOUNDEX() với số lượng đối số sai hoặc không chuyển bất kỳ đối số nào dẫn đến lỗi:

SELECT SOUNDEX();

Kết quả:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'SOUNDEX'

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cảm ơn bạn, Amazon, đã truyền cảm hứng cho chúng tôi để cung cấp một DBaaS tốt hơn:SkySQL

  2. DBA của tôi bị ốm - Mẹo chuyển đổi dự phòng cơ sở dữ liệu cho SysAdmins

  3. Cách triển khai cơ sở dữ liệu Chamilo MariaDB để có tính khả dụng cao

  4. Cách TIME_FORMAT () hoạt động trong MariaDB

  5. Hiểu ảnh hưởng của độ trễ cao trong các giải pháp MySQL và MariaDB sẵn có cao