Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Różnice Oracle między NVL a Coalesce

COALESCE to bardziej nowoczesna funkcja, która jest częścią ANSI-92 standardowe.

NVL to Oracle konkretnie, został wprowadzony w 80 zanim pojawiły się jakiekolwiek standardy.

W przypadku dwóch wartości są to synonimy.

Jednak są one zaimplementowane w inny sposób.

NVL zawsze ocenia oba argumenty, podczas gdy COALESCE zwykle zatrzymuje ocenę, gdy znajdzie pierwszy inny niż NULL (jest kilka wyjątków, takich jak sekwencja NEXTVAL ):

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

Działa to prawie przez 0.5 sekund, ponieważ generuje SYS_GUID() , pomimo 1 nie będąc NULL .

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

Rozumie, że 1 nie jest NULL i nie ocenia drugiego argumentu.

SYS_GUID 's nie są generowane, a zapytanie jest natychmiastowe.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dlaczego PL/SQL nie respektuje uprawnień przyznanych przez role?

  2. Jak używać Distributed AD, aby skrócić czas instalowania poprawek w Oracle EBS?

  3. Oracle PL/SQL:Eksportuj dane z tabeli do CSV

  4. CURRENT_TIMESTAMP() Funkcja w Oracle

  5. Jak przeliterować rok podczas formatowania daty w Oracle