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'