GREATEST&LEAST(判斷多列數(shù)據(jù)最大最小值)

常見數(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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容