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

Perbedaan Oracle antara NVL dan Coalesce

COALESCE adalah fungsi yang lebih modern yang merupakan bagian dari ANSI-92 standar.

NVL adalah Oracle spesifik, itu diperkenalkan di 80 's sebelum ada standar apapun.

Dalam hal dua nilai, keduanya adalah sinonim.

Namun, penerapannya berbeda.

NVL selalu mengevaluasi kedua argumen, sementara COALESCE biasanya menghentikan evaluasi setiap kali menemukan non-NULL first pertama (ada beberapa pengecualian, seperti urutan NEXTVAL ):

SELECT  SUM(val)
FROM    (
        SELECT  NVL(1, LENGTH(RAWTOHEX(SYS_GUID()))) AS val
        FROM    dual
        CONNECT BY
                level <= 10000
        )

Ini berjalan hampir 0.5 detik, karena menghasilkan SYS_GUID() 's, meskipun 1 bukan NULL .

SELECT  SUM(val)
FROM    (
        SELECT  COALESCE(1, LENGTH(RAWTOHEX(SYS_GUID()))) AS val
        FROM    dual
        CONNECT BY
                level <= 10000
        )

Ini memahami bahwa 1 bukan NULL dan tidak mengevaluasi argumen kedua.

SYS_GUID 's tidak dibuat dan kuerinya instan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. UID – Kembalikan ID Sesi Saat Ini di Oracle

  2. Kesalahan SQL:ORA-02291:batasan integritas

  3. Bagaimana cara menulis skrip penyisipan Oracle dengan satu bidang sebagai CLOB?

  4. Cara menghapus bagian dari string di Oracle

  5. Pemicu untuk menegakkan hubungan M-M