文章
姚 鑫 · 三月 7 阅读大约需 3 分钟

第七十四章 SQL函数 LEAST

第七十四章 SQL函数 LEAST

从一系列表达式中返回最小值的函数。

大纲

LEAST(expression,expression[,...])

参数

  • expression - 解析为数字或字符串的表达式。
    将这些表达式的值相互比较,并返回最小值。
    表达式可以是字段名、文字、算术表达式、主机变量或对象引用。
    最多可以列出140个逗号分隔的表达式。

描述

LEAST从逗号分隔的表达式序列中返回最小值。
表达式按从左到右的顺序求值。
如果只提供一个表达式,则LEAST返回该值。
如果任何表达式为NULL, LEAST返回NULL

如果所有表达式值都解析为规范数,则按数值顺序对它们进行比较。
如果引用的字符串包含规范格式的数字,则按数字顺序对其进行比较。
但是,如果引用的字符串包含非规范格式的数字(例如,'00''0.4''+4'),则将其作为字符串进行比较。
字符串比较按排序顺序逐字符执行。
任何字符串值都大于任何数字值。

空字符串大于任何数字值,但小于任何其他字符串值。

如果返回值是一个数字,LEAST将以规范格式返回它(删除前导和末尾的零,等等)。
如果返回值是一个字符串,LEAST将不改变返回值,包括任何开头或结尾的空格。

LEAST返回逗号分隔的一系列表达式中的最小值。
GREATEST返回逗号分隔的一系列表达式中的最大值。
COALESCE返回逗号分隔的一系列表达式中的第一个非null值。

返回值数据类型

如果表达式值的数据类型不同,则返回的数据类型是与所有可能的返回值最兼容的类型,具有最高数据类型优先级的数据类型。
例如,如果一个表达式是整数,而另一个表达式是小数,则LEAST返回数据类型NUMERIC的值。
这是因为NUMERIC是具有最高优先级的数据类型,并且与两者兼容。
但是,如果表达式是文字数字或字符串,则LEAST返回数据类型VARCHAR

示例

在下面的例子中,每个LEAST比较三个正则数:

SELECT LEAST(22,2.2,-21) AS HighNum,
       LEAST('2.2','22','-21') AS HighNumStr

-21 -21

在下面的例子中,每个LEAST比较三个数字字符串。
然而,每个LEAST包含一个非规范字符串;
这些非规范值将作为字符串进行比较。
字符串总是大于数字:

SELECT LEAST('22','+2.2','21'),
       LEAST('0.2','22','21')

21  21

在下面的例子中,每个LEAST都会比较三个字符串,并返回排序序列最低的值:

SELECT LEAST('A','a',''),
       LEAST('a','aa','abc'),
       LEAST('#','0','7'),
       LEAST('##','00','77')

    a   0   77

下面的例子比较了两个被视为标准数字的日期:作为$HOROLOG整数的出生日期和转换为日期的58074整数。
它返回每个在20世纪出生的人的出生日期。
任何在1999年12月31日之后出生的人都会显示默认的出生日期为2000年1月1日:

SELECT Name,LEAST(DOB,TO_DATE(58074)) AS NewMillenium
FROM Sample.Person

image

0
0 15
讨论 (0)1
登录或注册以继续