Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

SOUNDEX() Fungsi di Oracle

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:

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana menemukan tiga gaji tertinggi di tabel emp di oracle?

  2. permintaan penghapusan oracle membutuhkan terlalu banyak waktu

  3. Apakah COUNT(rowid) Lebih Cepat Dari COUNT(*)?

  4. if (pilih count(kolom) dari tabel)> 0 maka

  5. Pivoting data menggunakan dua kolom