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 là không số, sau đó đến từngexpr
sau khi đầu tiên được chuyển đổi hoàn toàn thành kiểu dữ liệu củaexpr
đầ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.