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

Hàm COALESCE () trong Oracle

Trong Cơ sở dữ liệu Oracle, COALESCE() hàm trả về biểu thức không rỗng đầu tiên trong danh sách biểu thức.

Cú pháp

Cú pháp như sau:

COALESCE(expr [, expr ]...)

Ít nhất hai biểu thức phải được chuyển.

Ví dụ

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

SELECT COALESCE(null, 7)
FROM DUAL;

Kết quả:

7

Dưới đây là một số ví dụ khác:

SET NULL 'null';
SELECT
    COALESCE(null, null, 1, 2, 3) AS "r1",
    COALESCE(1, null, 2, 3) AS "r2",
    COALESCE(null, 3, 2, 1) AS "r3",
    COALESCE(1, 2, 3, null) AS "r4",
    COALESCE(null, null) AS "r5"
FROM DUAL;

Kết quả:

   r1    r2    r3    r4      r5 
_____ _____ _____ _____ _______ 
    1     1     3     1 null   

Chúng ta có thể thấy rằng COALESCE() trả về null khi tất cả các đối số đều rỗng.

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.

Ví dụ về cơ sở dữ liệu

Giả sử chúng ta chạy truy vấn sau:

SET NULL 'null';
SELECT 
    LOCATION_ID,
    STATE_PROVINCE
FROM LOCATIONS
ORDER BY LOCATION_ID ASC
FETCH FIRST 6 ROWS ONLY;

Kết quả:

   LOCATION_ID      STATE_PROVINCE 
______________ ___________________ 
          1000 null                
          1100 null                
          1200 Tokyo Prefecture    
          1300 null                
          1400 Texas               
          1500 California          

Chúng ta có thể thấy rằng một số hàng null trong STATE_PROVINCE cột.

Đây là truy vấn lại, ngoại trừ lần này chúng tôi sử dụng COALESCE() chống lại STATE_PROVINCE cột:

SELECT 
    LOCATION_ID,
    COALESCE(STATE_PROVINCE, 'N/A')
FROM LOCATIONS
ORDER BY LOCATION_ID ASC
FETCH FIRST 6 ROWS ONLY;

Kết quả:

   LOCATION_ID    COALESCE(STATE_PROVINCE,'N/A') 
______________ _________________________________ 
          1000 N/A                               
          1100 N/A                               
          1200 Tokyo Prefecture                  
          1300 N/A                               
          1400 Texas                             
          1500 California                        

Vì vậy, chúng tôi đã sử dụng COALESCE() để trả về N/A bất cứ khi nào giá trị null xảy ra.

COALESCE() so với CASE

Sau đây:

COALESCE(expr1, expr2)

Tương đương với cái này:

CASE WHEN expr1 IS NOT NULL THEN expr1 ELSE expr2 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 COALESCE()
FROM DUAL;

Kết quả:

SQL Error: ORA-00938: not enough arguments for function
00938. 00000 -  "not enough arguments for function"

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Tham gia trên các giá trị null

  2. SQL, trên dòng thác xóa và trên dòng thác cập nhật

  3. Cách chuyển một tham số có giá trị bảng từ C # sang thủ tục được lưu trữ trong Oracle

  4. Cách chọn và sắp xếp theo cột không có trong câu lệnh Groupy By SQL - Oracle

  5. Triển khai nhiều phiên bản máy tính Oracle bằng cách sử dụng một nhóm cá thể và biểu mẫu địa hình