MariaDB
 sql >> Teknologi Basis Data >  >> RDS >> MariaDB

Bagaimana SOUNDEX() Bekerja di MariaDB

Di MariaDB, SOUNDEX() adalah fungsi string bawaan yang mengembalikan string Soundex dari string tertentu.

Soundex adalah algoritma fonetik untuk mengindeks nama dengan suara, seperti yang diucapkan dalam bahasa Inggris. Jika dua kata terdengar sama, mereka harus memiliki string Soundex yang sama. Jika dua kata terdengar mirip, tetapi tidak persis sama, string Soundex mereka mungkin terlihat mirip tetapi tidak persis sama.

Fungsi menerima satu argumen:string yang digunakan untuk mengembalikan string Soundex.

Sintaks

Sintaksnya seperti ini:

SOUNDEX(str)

Dimana str adalah string untuk mengembalikan string Soundex.

Contoh

Berikut ini contoh dasarnya:

SELECT SOUNDEX('Bat');

Hasil:

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

Berikut adalah contoh lain yang membandingkan string Soundex yang dikembalikan dari kata-kata yang mirip, tetapi berbeda, bunyinya:

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

Hasil:

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

Dan inilah salah satu yang membandingkan kata-kata yang tidak terdengar sama:

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

Hasil:

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

Saya harus menyebutkan bahwa fungsi ini mengimplementasikan algoritma Soundex asli yang membuang vokal terlebih dahulu dan menggandakan yang kedua. Ini berbeda dengan versi yang disempurnakan, yang membuang duplikat terlebih dahulu dan vokal kedua.

Selain itu, string Soundex standar memiliki panjang empat karakter, tetapi SOUNDEX() MariaDB fungsi mengembalikan string panjang yang sewenang-wenang. Oleh karena itu hasil di atas termasuk string Soundex non-standar.

Untuk mengilustrasikan apa yang saya maksud, inilah hasil yang saya dapatkan saat menggunakan SOUNDEX() Oracle berfungsi untuk melakukan hal yang sama:

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

Hasil:

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

Kecocokan Tepat

Berikut adalah contoh pasangan kata yang memiliki string Soundex yang cocok, meskipun berbeda kata, dengan arti yang berbeda:

SELECT 
    SOUNDEX('Dam') AS Dam, 
    SOUNDEX('Damn') AS Damn, 
    SOUNDEX('Too') AS Too, 
    SOUNDEX('Two') AS Two;

Hasil:

+------+------+------+------+
| Dam  | Damn | Too  | Two  |
+------+------+------+------+
| D500 | D500 | T000 | T000 |
+------+------+------+------+

Contoh Basis Data

Berikut ini contoh mendapatkan string Soundex dari kueri basis data:

SELECT 
    PetName, 
    SOUNDEX(PetName)
FROM Pets;

Hasil:

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

Kita juga bisa menggunakan SOUNDEX() dalam WHERE klausa untuk mengembalikan hanya baris yang terdengar seperti kata tertentu:

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

Hasil:

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

Namun, Anda mungkin lebih suka menggunakan SOUNDS LIKE sebagai gantinya, yang merupakan cara yang lebih ringkas untuk melakukan hal yang sama.

String Kosong

Inilah yang terjadi ketika string kosong dilewatkan untuk setiap argumen yang diberikan:

SELECT SOUNDEX('');

Hasil:

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

Argumen Null

Melewati null mengembalikan null :

SELECT SOUNDEX(null);

Hasil:

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

Argumen Tidak Ada

Memanggil SOUNDEX() dengan jumlah argumen yang salah, atau tanpa memberikan argumen apa pun menghasilkan kesalahan:

SELECT SOUNDEX();

Hasil:

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. Memperkenalkan MariaDB Platform X5:database beban kerja apa pun, sekarang dalam skala apa pun

  2. Memulai dengan ProxySQL - Tutorial Load Balancing MySQL &MariaDB

  3. Menjalankan Vitess dan MySQL dengan ClusterControl

  4. 2 Cara Mengembalikan Baris yang Hanya Mengandung Karakter Non-Alfanumerik di MariaDB

  5. Menjelajahi Berbagai Cara untuk Mengenkripsi Data MariaDB Anda