常見數(shù)據(jù)庫(kù)對(duì)于這兩個(gè)函數(shù)的支持情況如下:
函數(shù)功能 MySQL Oracle SQL Server PostgreSQL SQLite
GREATEST ?? ?? ?? ?? MAX*
LEAST ?? ?? ?? ?? MIN*
注釋:SQLite 中的 MAX 和 MIN 函數(shù)既可以作為聚合函數(shù)(只有一個(gè)參數(shù)時(shí))使用,也可以作為標(biāo)量函數(shù)(兩個(gè)或多個(gè)參數(shù)時(shí))使用。
MySQL
MySQL 5.0 開始支持 GREATEST 和 LEAST 函數(shù),例如:
1 SELECT greatest(6,3,9) "最大值", least(6,3,9) "最小值";
2 最大值|最小值|
3 -----+------+
4 9| 3|
這兩個(gè)函數(shù)至少需要 2 個(gè)參數(shù),只有一個(gè)參數(shù)會(huì)返回錯(cuò)誤。例如:
1 SELECT greatest(6) "最大值";
2 SQL 錯(cuò)誤 [1582] [42000]: Incorrect parameter count in the call to native function 'greatest'
另外,如果任何參數(shù)為 NULL,這兩個(gè)函數(shù)都會(huì)返回 NULL。例如:
1 SELECT greatest(6,NULL,9) "最大值", least(6,3,NULL) "最小值";
2 最大值|最小值|
3 -----+------+
4 | |
Oracle
Oracle 11gR1 開始提供 GREATEST 和 LEAST 函數(shù),例如:
1 SELECT GREATEST('A','C','B') "最大值", LEAST('A','C','B') "最小值"
FROM DUAL;
2 最大值|最小值|
3 -----+------+
4 C |A |
對(duì)于 Oracle 而言,這兩個(gè)函數(shù)可以只有 1 個(gè)參數(shù),但是并沒有實(shí)際意義,因?yàn)榇藭r(shí)函數(shù)返回值就是輸入的參數(shù)。
另外,如果任何參數(shù)為 NULL,這兩個(gè)函數(shù)都會(huì)返回 NULL。
Microsoft SQL Server
Microsoft SQL Server 2022 開始支持 GREATEST 和 LEAST 函數(shù),例如:
1 SELECT GREATEST('6.62', 3.1415, N'7') "最大值", LEAST('6.62', 3.1415, N'7') "最小值";
2 最大值|最小值|
3 -----+------+
4 7|3.1415|
這兩個(gè)函數(shù)可以只有 1 個(gè)參數(shù),但是并沒有實(shí)際意義,因?yàn)榇藭r(shí)函數(shù)返回值就是輸入的參數(shù)。另外,參數(shù)個(gè)數(shù)最多為 254。
如果參數(shù)中包含 NULL,計(jì)算時(shí)忽略 NULL 參數(shù);如果所有參數(shù)都為 NULL,函數(shù)返回 NULL。
PostgreSQL
PostgreSQL 8.1 引入了 GREATEST 和 LEAST 函數(shù),例如:
1 SELECT greatest(6,3,9) "最大值", least(6,3,9) "最小值";
2 最大值|最小值|
3 -----+------+
4 9| 3|
這兩個(gè)函數(shù)可以只有 1 個(gè)參數(shù),但是并沒有實(shí)際意義,因?yàn)榇藭r(shí)函數(shù)返回值就是輸入的參數(shù)。
如果參數(shù)中包含 NULL,計(jì)算時(shí)忽略 NULL 參數(shù);如果所有參數(shù)都為 NULL,函數(shù)返回 NULL。
SQLite
SQLite 使用 MAX 和 MIN 作為函數(shù)名稱,并且通過參數(shù)個(gè)數(shù)區(qū)分聚合函數(shù)和標(biāo)量函數(shù),例如:
1 SELECT max(6,3,9) "最大值", min(6,3,9) "最小值";
2 最大值|最小值|
-----+------+
9| 3|
3 SELECT max(salary), min(salary)
FROM employee;
max(salary)|min(salary)|
4 -----------+-----------+
5 24000| 4000|
第一個(gè)查詢中的兩個(gè)函數(shù)是標(biāo)量函數(shù);第二個(gè)查詢中的兩個(gè)函數(shù)是聚合函數(shù),因?yàn)樗鼈冎挥幸粋€(gè)參數(shù)。
作為標(biāo)量函數(shù)使用時(shí),如果任何參數(shù)為 NULL,這兩個(gè)函數(shù)都會(huì)返回 NULL