Trong PostgreSQL, GREATEST()
hàm trả về giá trị lớn nhất (hoặc lớn nhất) từ danh sách bất kỳ số biểu thức nào.
GREATEST()
chức năng không được bao gồm trong tiêu chuẩn SQL, nhưng nó là một phần mở rộng phổ biến mà nhiều RDBMS chính hỗ trợ.
Cú pháp
GREATEST(value [, ...])
Điều này có nghĩa là chúng ta có thể truyền một hoặc nhiều giá trị cho hàm.
Ví dụ
Dưới đây là một ví dụ đơn giản để chứng minh:
SELECT GREATEST( 3, 15, 7 );
Kết quả:
15
Chuỗi
Dưới đây là một ví dụ trong đó tất cả các đối số là chuỗi:
SELECT GREATEST( 'Bear', 'Zebra', 'Ant' );
Kết quả:
Zebra
Ngày
Dưới đây là so sánh các chuỗi ngày:
SELECT GREATEST(date '2027-01-01', date '2027-12-31');
Kết quả:
2027-12-31
Loại dữ liệu chung
Tất cả các biểu thức phải có thể chuyển đổi thành một kiểu dữ liệu chung. Kết quả sẽ sử dụng kiểu này.
Nếu không thể chuyển đổi các biểu thức thành một kiểu dữ liệu chung, thì sẽ xảy ra lỗi:
SELECT GREATEST( 3, 'Fifteen', 7 );
Kết quả:
ERROR: invalid input syntax for type integer: "Fifteen" LINE 1: SELECT GREATEST( 3, 'Fifteen', 7 ); ^
Giá trị rỗng
Giá trị rỗng bị bỏ qua trừ khi tất cả các biểu thức null
. Nếu tất cả các biểu thức đều null
, rồi đến null
được trả lại:
\pset null '<null>'
SELECT
GREATEST( 3, null, 7 ),
GREATEST( null, null, null );
Kết quả:
greatest | greatest ----------+---------- 7 | <null>
Theo mặc định, psql trả về chuỗi trống trên các giá trị null. Trong dòng đầu tiên trong ví dụ này, tôi đặt giá trị null để xuất ra <null>
để chúng tôi thấy kết quả rỗng dễ dàng hơn.
Thiếu đối số
Đang gọi GREATEST()
mà không có bất kỳ đối số nào dẫn đến lỗi:
SELECT GREATEST();
Kết quả:
ERROR: syntax error at or near ")" LINE 1: SELECT GREATEST(); ^
Tuy nhiên, chúng ta có thể chuyển một đối số mà không bị lỗi:
SELECT GREATEST( 1 );
Kết quả:
1