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: