第六十一章 SQL函数 GREATEST
第六十一章 SQL函数 GREATEST
从一系列表达式中返回最大值的函数。
大纲
GREATEST(expression,expression[,...])
参数
expression
- 解析为数字或字符串的表达式。
对这些表达式的值进行比较。
表达式可以是字段名、文字、算术表达式、主机变量或对象引用。
最多可以列出140
个逗号分隔的表达式。
描述
GREATEST
返回逗号分隔的一系列表达式中的最大值。
表达式按从左到右的顺序求值。
如果只提供一个表达式,则GREATEST
返回该值。
如果任何表达式为NULL
,则GREATEST
返回NULL
。
如果所有表达式值都解析为规范数,则按数值顺序对它们进行比较。
如果引用的字符串包含规范格式的数字,则按数字顺序对其进行比较。
但是,如果引用的字符串包含非规范格式的数字(例如,'00'
、'0.4'
或'+4'
),则将其作为字符串进行比较。
字符串比较按排序顺序逐字符执行。
任何字符串值都大于任何数字值。
空字符串大于任何数字值,但小于任何其他字符串值。
如果返回值是一个数字,则GREATEST
将以规范格式返回它(删除前导和末尾的零,等等)。
如果返回值是一个字符串,则GREATEST
将不改变返回值,包括任何前导或末尾空格。
GREATEST
返回逗号分隔的一系列表达式中的最大值。
LEAST
返回逗号分隔的一系列表达式中的最小值。
COALESCE
返回逗号分隔的一系列表达式中的第一个非null
值。
返回值数据类型
如果表达式值的数据类型不同,则返回的数据类型是与所有可能的返回值最兼容的类型,具有最高数据类型优先级的数据类型。
例如,如果一个表达式是整数,而另一个表达式是小数,则GREATEST
返回数据类型NUMERIC
的值。
这是因为NUMERIC
是具有最高优先级的数据类型,并且与两者兼容。
但是,如果表达式是文字数字或字符串,则GREATEST
将返回数据类型VARCHAR
。
示例
在下面的例子中,每个GREATEST
比较了三个正则数:
SELECT GREATEST(22,2.2,-21) AS HighNum,
GREATEST('2.2','22','-21') AS HighNumStr
22 22
在下面的例子中,每个GREATEST
比较三个数字字符串。
但是,每个GREATEST
包含一个非规范字符串;
这些非规范值将作为字符串进行比较。
字符串总是大于数字:
SELECT GREATEST('22','+2.2','-21'),
GREATEST('0.2','22','-21')
+2.2 0.2
在下面的例子中,每个GREATEST
都会比较三个字符串,并返回排序序列最高的值:
SELECT GREATEST('A','a',''),
GREATEST('a','ab','abc'),
GREATEST('#','0','7'),
GREATEST('##','00','77')
a abc # 00
下面的示例将两个日期作为规范数字进行比较:出生日期作为$HOROLOG
整数,整数58073
转换为日期。它返回21世纪出生的每个人的出生日期。任何在2000年1月1日
之前出生的人都会显示默认的出生日期1999年12月31日
:
SELECT Name,GREATEST(DOB,TO_DATE(58073)) AS NewMillenium
FROM Sample.Person