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

Hàm GREATEST () trong Oracle

Trong Cơ sở dữ liệu Oracle, GREATEST() hàm trả về giá trị lớn nhất trong danh sách một hoặc nhiều biểu thức.

Cú pháp

Cú pháp như sau:

GREATEST(expr [, expr ]...)

expr đầu tiên được sử dụng để xác định kiểu trả về:

  • Nếu expr đầu tiên là số, sau đó Oracle xác định đối số có ưu tiên số cao nhất, chuyển đổi ngầm các đối số còn lại thành kiểu dữ liệu đó trước khi so sánh và trả về kiểu dữ liệu đó.
  • Nếu expr đầu tiên không số, sau đó đến từng expr sau khi đầu tiên được chuyển đổi hoàn toàn thành kiểu dữ liệu của expr đầu tiên trước khi so sánh.

Ví dụ

Đây là một ví dụ:

SELECT GREATEST('a', 'b', 'c')
FROM DUAL;

Kết quả:

c

Đây là một số khác:

SELECT 
    GREATEST('A', 'a') AS "r1",
    GREATEST('Cat', 'Dog', 'Dot') AS "r2",
    GREATEST(1, 2, 3) AS "r3",
    GREATEST(1, '2', 3) AS "r4",
    GREATEST('Cat', '2001-12-31') AS "r5"
FROM DUAL;

Kết quả:

   r1     r2    r3    r4     r5 
_____ ______ _____ _____ ______ 
a     Dot        3     3 Cat   

Biểu thức

Các đối số có thể bao gồm các biểu thức như sau:

SELECT GREATEST(2 * 3, 1 * 3)
FROM DUAL;

Kết quả:

6

Ngày

Dưới đây là so sánh các chuỗi ngày:

SELECT GREATEST(DATE '2020-01-01', DATE '2021-01-01')
FROM DUAL;

Kết quả:

01-JAN-21

Ngày được trả về ở định dạng ngày của phiên hiện tại. Xem Cách kiểm tra định dạng ngày của phiên hiện tại.

Giá trị rỗng

Nếu bất kỳ đối số nào là null , kết quả là null :

SET NULL 'null';
SELECT 
    GREATEST(null, 2),
    GREATEST(1, null)
FROM DUAL;

Kết quả:

   GREATEST(NULL,2)    GREATEST(1,NULL) 
___________________ ___________________ 
null                               null

Theo mặc định, SQLcl và SQL * Plus trả về một khoảng trống bất cứ khi nào giá trị 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.

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

Đang gọi GREATEST() mà không có bất kỳ đối số nào dẫn đến lỗi:

SELECT GREATEST()
FROM DUAL;

Kết quả:

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

Bạn cũng có thể sử dụng LEAST() để trả về ít nhất trong danh sách một hoặc nhiều biểu thức.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Loại bỏ tiêu đề cột vào tệp văn bản đầu ra

  2. Cách thay đổi nls_date_format mặc định cho ứng dụng khách oracle jdbc

  3. ORA-01264:Không thể tạo tên tệp logfile

  4. Sự khác biệt giữa phép nối băm và phép nối hợp nhất (Oracle RDBMS) là gì?

  5. Làm cách nào để tạo mệnh đề WHERE động?