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

Hàm NULLIF () trong Oracle

Trong Cơ sở dữ liệu Oracle, NULLIF() hàm so sánh hai biểu thức và trả về null nếu cả hai biểu thức bằng nhau. Nếu chúng không bằng nhau, thì hàm trả về biểu thức đầu tiên.

Cú pháp

Cú pháp như sau:

NULLIF(expr1, expr2)

Ví dụ

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

SELECT NULLIF(5, 7)
FROM DUAL;

Kết quả:

5

Trong trường hợp này, các đối số không bằng nhau và do đó hàm trả về đối số đầu tiên.

Dưới đây là những gì sẽ xảy ra khi cả hai đối số bằng nhau:

SET NULL 'null';
SELECT NULLIF(7, 7)
FROM DUAL;

Kết quả:

null

Chúng ta có thể thấy rằng NULLIF() trả về null khi cả hai đối số bằng nhau

Về dòng đầu tiên SET NULL 'null'; , Tôi đã thêm điều đó để phiên SQLcl của tôi trả về null 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 được trả về. Ở đây tôi đã chỉ định rằng chuỗi null nên được trả lại.

So với CASE

NULLIF() hàm tương đương với CASE sau biểu thức:

CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END

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 NULLIF()
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 NULLIF(1, 2, 3)
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. Tạo chèn sql vào cho Oracle

  2. Tìm các mục trùng lặp trong một cột

  3. Đề xuất hỗ trợ cả Oracle và SQL Server trong cùng một ứng dụng ASP.NET với NHibernate

  4. Làm cách nào để tôi có thể truy cập sớm vào các bản cập nhật Oracle Java để có thể kiểm tra RIA của mình và tránh các cuộc tập trận khi các bản cập nhật này được công khai?

  5. Làm thế nào để gọi thủ tục lưu trữ Oracle trong Python?