在取最大最小值的时候,首先要明确要取的值是同一列中的最大最小,还是同一行中的最大最小。
1、同一列上取最大最小:MAX、MIN
2、同一行上取最大最小:GREATEST、LEAST
同一列上取最大最小值的MAX和MIN已经熟悉,这里主要介绍
【同一行上取最大最小:GREATEST、LEAST】
注意:一下用到的【1,2,3,4】这种,把它当成是不同的列
最大:GREATEST
--对于纯数字
SELECT GREATEST(1,2,3,4) AS "比较结果" FROM dual; -- 最大:4
--对于纯数字 与顺序无关
SELECT GREATEST(1,4,3,2) AS "比较结果" FROM dual; -- 最大:4
--对于字符型
SELECT GREATEST('1','2','3','4') AS "比较结果" FROM dual; -- 最大:4
--对于字符型 与顺序无关
SELECT GREATEST('1','4','3','2') AS "比较结果" FROM dual; -- 最大:4
--对于字母型
SELECT GREATEST('a','b','c','d') AS "比较结果" FROM dual; -- 最大:d
--对于字母型 与顺序无关
SELECT GREATEST('a','d','c','b') AS "比较结果" FROM dual; -- 最大:d
--对于数字字母混合型
SELECT GREATEST('1a','2b','3c','4d') AS "比较结果" FROM dual; -- 最大:4d
--对于数字字母混合型 与顺序无关
SELECT GREATEST('1a','4d','3c','2b') AS "比较结果" FROM dual; -- 最大:4d
--对于数字字符混合型
SELECT GREATEST('1a','b2','3c','4d') AS "比较结果" FROM dual; -- 最大:b2
--对于数字字符混合型 与顺序无关
SELECT GREATEST('1a','d4','3c','2b') AS "比较结果" FROM dual; -- 最大:d4
最小:LEAST
--对于纯数字
SELECT LEAST(1,2,3,4) AS "比较结果" FROM dual; -- 最小:1
--对于纯数字 与顺序无关
SELECT LEAST(4,1,3,2) AS "比较结果" FROM dual; -- 最小:1
--对于字符型
SELECT LEAST('2','1','3','4') AS "比较结果" FROM dual; -- 最小:1
--对于字符型 与顺序无关
SELECT LEAST('4','1','3','2') AS "比较结果" FROM dual; -- 最小:1
--对于字母型
SELECT LEAST('b','a','c','d') AS "比较结果" FROM dual; -- 最小:a
--对于字母型 与顺序无关
SELECT LEAST('d','a','c','b') AS "比较结果" FROM dual; -- 最小:a
--对于数字字母混合型
SELECT LEAST('2b','1a','3c','4d') AS "比较结果" FROM dual; -- 最小:1a
--对于数字字母混合型 与顺序无关
SELECT LEAST('4d','1a','3c','2b') AS "比较结果" FROM dual; -- 最小:1a
--对于数字字符混合型
SELECT LEAST('b2','1a','3c','4d') AS "比较结果" FROM dual; -- 最小:1a
--对于数字字符混合型 与顺序无关
SELECT LEAST('d4','1a','3c','2b') AS "比较结果" FROM dual; -- 最小:1a
下面根据具体的表,看一下执行结果
SELECT
num -- 有值
, pln_id -- 有值
, prd_id -- null
, rmng_qty -- 有值
FROM
ACTL_LK
WHERE
LK_ID = '0000000273';
检索结果:
情况1、需要判断的列里有null的情况,此时取到的最大值就是 null这列
情况2、需要判断的列里都有值的情况,