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

COALESCE() Fungsi di Oracle

Di Oracle Database, COALESCE() fungsi mengembalikan ekspresi non-null pertama daftar ekspresi.

Sintaks

Sintaksnya seperti ini:

COALESCE(expr [, expr ]...)

Setidaknya dua ekspresi harus dilewati.

Contoh

Berikut ini contoh untuk didemonstrasikan:

SELECT COALESCE(null, 7)
FROM DUAL;

Hasil:

7

Berikut beberapa contoh lainnya:

SET NULL 'null';
SELECT
    COALESCE(null, null, 1, 2, 3) AS "r1",
    COALESCE(1, null, 2, 3) AS "r2",
    COALESCE(null, 3, 2, 1) AS "r3",
    COALESCE(1, 2, 3, null) AS "r4",
    COALESCE(null, null) AS "r5"
FROM DUAL;

Hasil:

   r1    r2    r3    r4      r5 
_____ _____ _____ _____ _______ 
    1     1     3     1 null   

Kita dapat melihat bahwa COALESCE() mengembalikan null ketika semua argumen adalah null.

Mengenai baris pertama SET NULL 'null'; , saya menambahkannya agar sesi SQLcl saya mengembalikan null setiap kali hasilnya nol.

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.

Contoh Basis Data

Misalkan kita menjalankan kueri berikut:

SET NULL 'null';
SELECT 
    LOCATION_ID,
    STATE_PROVINCE
FROM LOCATIONS
ORDER BY LOCATION_ID ASC
FETCH FIRST 6 ROWS ONLY;

Hasil:

   LOCATION_ID      STATE_PROVINCE 
______________ ___________________ 
          1000 null                
          1100 null                
          1200 Tokyo Prefecture    
          1300 null                
          1400 Texas               
          1500 California          

Kita dapat melihat bahwa beberapa baris adalah null di STATE_PROVINCE kolom.

Berikut query lagi, kecuali kali ini kita menggunakan COALESCE() terhadap STATE_PROVINCE kolom:

SELECT 
    LOCATION_ID,
    COALESCE(STATE_PROVINCE, 'N/A')
FROM LOCATIONS
ORDER BY LOCATION_ID ASC
FETCH FIRST 6 ROWS ONLY;

Hasil:

   LOCATION_ID    COALESCE(STATE_PROVINCE,'N/A') 
______________ _________________________________ 
          1000 N/A                               
          1100 N/A                               
          1200 Tokyo Prefecture                  
          1300 N/A                               
          1400 Texas                             
          1500 California                        

Jadi kami menggunakan COALESCE() untuk mengembalikan N/A setiap kali nilai nol terjadi.

COALESCE() vs CASE

Berikut ini:

COALESCE(expr1, expr2)

Setara dengan ini:

CASE WHEN expr1 IS NOT NULL THEN expr1 ELSE expr2 END

Jumlah Argumen Tidak Valid

Memanggil fungsi tanpa meneruskan argumen apa pun menghasilkan kesalahan:

SELECT COALESCE()
FROM DUAL;

Hasil:

SQL Error: ORA-00938: not enough arguments for function
00938. 00000 -  "not enough arguments for function"

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apa itu Urutan di oracle

  2. Fungsi TRUNC(tanggal) di Oracle

  3. Fungsi NLS_INITCAP() di Oracle

  4. Menghitung jumlah kemunculan karakter di Oracle SQL

  5. Parsing json melalui json_table di Oracle 18