Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Hàm NVL2 () trong Oracle

Trong Cơ sở dữ liệu Oracle, NVL2() hàm cho phép chúng ta thay thế các giá trị null bằng một giá trị khác.

Nó tương tự như NVL() , ngoại trừ việc nó chấp nhận ba đối số thay vì hai. Điều này cho phép chúng tôi chỉ định một giá trị khác để trả về trong trường hợp đối số đầu tiên không phải là giá trị rỗng.

Cú pháp

Cú pháp như sau:

NVL2(expr1, expr2, expr3)

Nếu expr1 không phải là null, thì NVL2 trả về expr2 . Nếu expr1 là null, sau đó là NVL2 trả về expr3 .

Ví dụ

Dưới đây là một ví dụ để chứng minh:

SELECT NVL2(null, 2, 3)
FROM DUAL;

Kết quả:

3

Đối số đầu tiên là null và do đó, đối số thứ ba được trả về.

Và đây là những gì sẽ xảy ra khi đối số đầu tiên không rỗng:

SELECT NVL2(1, 2, 3)
FROM DUAL;

Kết quả:

2

Khi các giá trị thay thế bằng rỗng

Nếu đối số thứ hai hoặc thứ ba là null, thì bạn có thể nhận được kết quả rỗng.

Ví dụ:

SET NULL '(null)';
SELECT 
    NVL2(1, null, 3) AS "r1",
    NVL2(null, 2, null) AS "r2"
FROM DUAL;

Kết quả:

       r1        r2 
_________ _________ 
   (null)    (null)

Về dòng đầu tiên SET NULL '(null)'; , Tôi đã thêm dòng này để phiên SQLcl của tôi trả về giá trị đó bất cứ khi nào kết quả là null.

Theo mặc định, SQLcl và SQL * Plus trả về một khoảng trống bất cứ khi nào null xảy ra do một SELECT trong SQL tuyên bố.

Tuy nhiên, bạn có thể sử dụng SET NULL để chỉ định một chuỗi khác sẽ được trả về (giống như tôi đã hoàn thành ở đây).

Số lượng đối số không hợp lệ

Việc gọi hàm mà không chuyển bất kỳ đối số nào dẫn đến lỗi:

SELECT NVL2()
FROM DUAL;

Kết quả:

SQL Error: ORA-00909: invalid number of arguments
00909. 00000 -  "invalid number of arguments"

Và việc chuyển quá nhiều đối số cũng gây ra lỗi:

SELECT NVL2(1, 2, 3, 4)
FROM DUAL;

Kết quả:

SQL Error: ORA-00909: invalid number of arguments
00909. 00000 -  "invalid number of arguments"

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thủ tục lưu trữ Oracle:trả về cả tham số đặt và ra kết quả

  2. Dịch vụ cơ sở dữ liệu trên AWS và Nền tảng đám mây Oracle

  3. Thay đổi kích thước tên bảng / cột / chỉ mục trong oracle 11g hoặc 12c

  4. 4 Ví dụ về khối ẩn danh PL / SQL

  5. Cách nhanh hơn để Chèn, thông qua tập lệnh, trong Oracle?