Di Oracle, SOUNDEX()
fungsi mengembalikan string karakter yang berisi representasi fonetik dari argumennya. Ini dikenal sebagai string Soundex.
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(char)
Dimana char
adalah string untuk mengembalikan string Soundex. Itu bisa berupa tipe data apa saja CHAR
, VARCHAR2
, NCHAR
, atau NVARCHAR2
. Nilai yang dikembalikan adalah tipe data yang sama dengan argumen.
Contoh
Berikut ini contoh dasarnya:
SELECT SOUNDEX('Bat')
FROM DUAL;
Hasil:
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')
FROM DUAL;
Hasil:
SOUNDEX('BAT') SOUNDEX('CAT') SOUNDEX('CAP') _________________ _________________ _________________ B300 C300 C100
Dan inilah salah satu yang membandingkan kata-kata yang tidak terdengar sama:
SELECT
SOUNDEX('Ponzi'),
SOUNDEX('Bracket'),
SOUNDEX('Heavy')
FROM DUAL;
Hasil:
SOUNDEX('PONZI') SOUNDEX('BRACKET') SOUNDEX('HEAVY') ___________________ _____________________ ___________________ P520 B623 H100
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
FROM DUAL;
Hasil:
DAM DAMN TOO TWO _______ _______ _______ _______ D500 D500 T000 T000
Contoh Basis Data
Berikut ini contoh mendapatkan string Soundex dari kueri basis data:
SELECT
country_name,
SOUNDEX(country_name)
FROM countries
FETCH FIRST 10 ROWS ONLY;
Hasil:
COUNTRY_NAME SOUNDEX(COUNTRY_NAME) _______________ ________________________ Argentina A625 Australia A236 Belgium B425 Brazil B624 Canada C530 Switzerland S326 China C500 Germany G655 Denmark D562 Egypt E213
Kita juga bisa menggunakan SOUNDEX()
dalam WHERE
klausa untuk mengembalikan hanya baris yang terdengar seperti kata tertentu:
SELECT
employee_id,
first_name,
last_name
FROM employees
WHERE SOUNDEX(first_name) = SOUNDEX('Stephen');
Hasil:
EMPLOYEE_ID FIRST_NAME LAST_NAME ______________ _____________ ____________ 100 Steven King 128 Steven Markle 138 Stephen Stiles
String Kosong
Inilah yang terjadi ketika string kosong dilewatkan untuk setiap argumen yang diberikan:
SET NULL 'null';
SELECT SOUNDEX('')
FROM DUAL;
Hasil:
null
Secara default, SQLcl dan SQL*Plus mengembalikan ruang kosong setiap kali null
terjadi sebagai akibat dari SQL SELECT
penyataan.
Namun, Anda dapat menggunakan SET NULL
untuk menentukan string berbeda yang akan dikembalikan. Di sini saya menetapkan bahwa string null
harus dikembalikan.
Argumen Null
Melewati null
mengembalikan null
:
SELECT SOUNDEX(null)
FROM DUAL;
Hasil:
null
Argumen Tidak Ada
Memanggil SOUNDEX()
tanpa meneruskan argumen apa pun menghasilkan kesalahan:
SELECT SOUNDEX()
FROM DUAL;
Hasil:
Error starting at line : 1 in command - SELECT SOUNDEX() FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments" *Cause: *Action:
Dan meneruskan terlalu banyak argumen juga menghasilkan kesalahan:
SELECT SOUNDEX('Gosh', 'Dang')
FROM DUAL;
Hasil:
Error starting at line : 1 in command - SELECT SOUNDEX('Gosh', 'Dang') FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments" *Cause: *Action: