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

Hàm NULLIF () của Oracle

Hướng dẫn SQL này cung cấp giải thích, ví dụ cho hàm NULLIF trong Oracle

Hàm NULLIF là một hàm rất hữu ích. Nó so sánh hai giá trị và trả về null nếu các giá trị giống nhau, nếu không trả về giá trị đầu tiên

expr1 :đó là các giá trị hoặc biểu thức nguồn sẽ được so sánh với expr2
expr2 :Nó cũng là giá trị nguồn được so sánh với expr1

Bạn không thể chỉ định chữ NULL cho giá trị đầu tiên

SQL> select nullif(NULL,1) from dual;
select nullif(NULL,1) from dual
*
ERROR at line 1:
ORA-00932: inconsistent datatypes: expected - got CHAR

Cách sử dụng và ví dụ

SQL> select nullif(1,1) from dual;
NULLIF(1,1)
----------- SQL> select nullif(1,2) from dual; NULLIF(1,2)
-----------
1

Lưu ý quan trọng

1) Câu lệnh này rất giống với câu lệnh trường hợp và nó tương đương với
CASE WHEN expr1 =expr2 THEN NULL ELSE expr1 END

2) Nếu cả hai đối số đều là kiểu dữ liệu số, thì Cơ sở dữ liệu Oracle xác định đối số có mức ưu tiên số cao hơn, chuyển đổi hoàn toàn đối số khác thành kiểu dữ liệu đó và trả về kiểu dữ liệu đó. Nếu các đối số không phải là số, thì chúng phải có cùng kiểu dữ liệu oracle, nếu không Oracle trả về lỗi.

SQL> select nullif(1,'apple') from dual;
select nullif(1,'apple') from dual
*
ERROR at line 1:
ORA-00932: inconsistent datatypes: expected NUMBER got CHAR

SQL> select nullif('apple',1) from dual;
select nullif('apple',1) from dual
*
ERROR at line 1:
ORA-00932: inconsistent datatypes: expected CHAR got NUMBER

Ví dụ khác

select first_name, length(first_name),last_name,
length(last_name), nullif(length(first_name),length(last_name))
 from emp;

SELECT NULLIF('Sunday', 'Friday') AS check FROM dual;

Một trường hợp sử dụng khác của hàm NULLIF sẽ là nếu bạn muốn liệt kê những nhân viên đã thay đổi công việc kể từ khi họ được thuê, như được chỉ ra bởi job_id trong bảng job_history khác với job_id hiện tại trong bảng nhân viên

select emp_name,nullif(b.job_id,a.job_id) old_job from employees a,   job_history  b where a.emp_id=b.emp_id;

Câu hỏi thường gặp về hàm Nullif

Cách tránh lỗi chia cho 0 với sự trợ giúp của hàm NULLIF

Chúng ta nhận được sai số chia cho 0 nếu mẫu số trong phép chia bằng không. Chúng ta có thể tránh bằng cách sử dụng hàm NULLIF như bên dưới
chọn 100 / nullif (0,0) từ kép;
Bây giờ ở đây vì cả hai giá trị đều bằng nhau, Nullif sẽ trả về null và toàn bộ biểu thức sẽ trả về null thay thế của bất kỳ lỗi nào. Đây là cách bạn có thể sử dụng khi xử lý cột thực
select col2 / nullif (col1,0) from exp;

Các bài viết có liên quan

Cập nhật câu lệnh trong oracle
hàm NVL2 trong Oracle
Hàm NVL trong Oracle
Hàm Coalesce trong Oracle
Các hàm một hàng trong sql
Xóa khỏi câu lệnh bảng trong Oracle

Tài nguyên bên ngoài
Tham chiếu Oracle cho NULLIF


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhà cung cấp không tương thích với phiên bản lỗi máy khách Oracle khi sử dụng Oracle.DataClient

  2. Các chức năng có giá trị trên bảng trong ORACLE 11g? (các chế độ xem được tham số hóa)

  3. ORA-28001:Mật khẩu đã hết hạn

  4. PLSQL Chèn vào với truy vấn con và mệnh đề trả về

  5. Làm thế nào để tải một số lượng lớn các chuỗi để phù hợp với cơ sở dữ liệu oracle?