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

Hàm NVL2 trong Oracle

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

Hàm NVL2 là một hàm lồng nhau. Nó kiểm tra lần hiển thị đầu tiên, nếu lần hiển thị đầu tiên không rỗng, thì hàm NVL2 trả về biểu thức thứ hai. nếu lần hiển thị đầu tiên là null, thì nó sẽ trả về biểu thức thứ ba.

expr1 :nó là các giá trị nguồn hoặc biểu thức có thể chứa null. Bạn có thể cung cấp tên cột, chức năng trên tên cột
expr2 :Đây là giá trị của biểu thức được trả về nếu expr1 không phải là null
expr3 :Đây là giá trị của biểu thức được trả về nếu expr1 là null

Đối số expr1 có thể có bất kỳ kiểu dữ liệu nào. Các đối số expr2 và expr3 có thể có bất kỳ kiểu dữ liệu nào ngoại trừ LONG.

SQL> select nvl2(user_name,1,2) from apps.fnd_user where rownum < 5;

NVL2(USER_NAME,1,2)
-------------------
1
1
1
1

SQL> select nvl2(end_date,1,2) from apps.fnd_user where rownum < 5;

NVL2(END_DATE,1,2)
------------------
1
2
1
1

Nếu kiểu dữ liệu của expr2 và expr3 khác nhau:

Nếu expr2 là dữ liệu ký tự, thì Cơ sở dữ liệu Oracle chuyển đổi expr3 thành kiểu dữ liệu của expr2 trước khi so sánh chúng trừ khi expr3 là hằng số null. Trong trường hợp đó, chuyển đổi kiểu dữ liệu là không cần thiết. Oracle trả về VARCHAR2 trong bộ ký tự của expr2.

Nếu expr2 là số, thì Oracle xác định đối số nào có ưu tiên số cao nhất, 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 đó.

Kiểu dữ liệu của kiểu trả về luôn giống với kiểu dữ liệu của expr2 trừ khi expr2 là dữ liệu ký tự, giá trị trả về trong trường hợp nào luôn là varchar2

SQL> select nvl2(end_date,1,'a') from apps.fnd_user where rownum < 5;
select nvl2(end_date,1,'a') from apps.fnd_user where rownum < 5
*
ERROR at line 1:
ORA-01722: invalid number

SQL> select nvl2(end_date,'a',1) from apps.fnd_user where rownum < 5;

N
-
a
1
a
a

Cách sử dụng

SELECT last_name, salary, NVL2(commission_pct,
salary + (salary * commission_pct), salary) income
FROM employees WHERE last_name like 'B%'
ORDER BY last_name;

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

Các hàm hàng đơn trong Sql
Hàm NULLIF trong Oracle
Cập nhật câu lệnh trong oracle
Hàm Coalesce trong Oracle
Hàm LISTAGG Oracle
các hàm ngày oracle


  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ại sao tôi nhận được PLS-00302:thành phần phải được khai báo khi nó tồn tại?

  2. OracleDataSource so với Oracle UCP PoolDataSource

  3. Làm cách nào để thực hiện chèn hàng loạt vào cơ sở dữ liệu Oracle bằng Python?

  4. Sử dụng 'cột biểu thức chữ hoa chữ thường' trong mệnh đề where

  5. Làm thế nào để liệt kê tất cả các thủ tục được lưu trữ trong cơ sở dữ liệu Oracle