説明
LEAST は、コンマで区切られた一連の式から最小値を返します。式は、左から順に評価されます。expression が 1 つしかない場合は、LEAST はその値を返します。expression が NULL の場合、LEAST は NULL を返します。
すべての expression 値がキャノニック形式の数値に解決される場合は、数値順に比較されます。引用符で囲まれた文字列にキャノニック形式の数値が含まれている場合は、数値順に比較されます。一方、引用符で囲まれた文字列にキャノニック形式以外の数値 ('00'、'0.4'、または '+4' など) が含まれている場合は、文字列として比較されます。文字列の比較は、照合順に文字ごとに行われます。文字列値は、数値よりも大きくなります。
空の文字列は、任意の数値よりも大きいものの、他の文字列値よりは小さくなります。
返り値が数値の場合、LEAST は返り値を (先頭と末尾のゼロが削除されるなど) キャノニック形式で返します。返り値が文字列の場合は、LEAST は、先頭または末尾の空白も含めてその文字列を変更せずに返します。
LEAST は、コンマで区切られた一連の式から最小値を返します。GREATEST は、コンマで区切られた一連の式から最大値を返します。COALESCE は、コンマで区切られた一連の式から最初の非 NULL 値を返します。
返り値のデータ型
expression 値のデータ型が異なる場合、返されるデータ型は可能なすべての返り値と最も互換性の高い型、つまり最も高いデータ型の優先順位を持つデータ型になります。例えば、ある expression が整数で別の expression が小数の場合、LEAST はデータ型 NUMERIC の値を返します。これは、NUMERIC が両方に互換性がある、最も高い優先順位を持つデータ型であるためです。ただし、expression がリテラル値または文字列である場合、LEAST はデータ型 VARCHAR を返します。
例
次の例では、各 LEAST は 3 つのキャノニック形式の数値を比較しています。
SELECT LEAST(22,2.2,-21) AS HighNum,
LEAST('2.2','22','-21') AS HighNumStr
次の例では、各 LEAST は、3 つの数値文字列を比較しています。ただし、各 LEAST には、キャノニック形式以外の文字列が 1 つ含まれています。これらのキャノニック形式以外の値は、文字列として比較されます。文字列は数字よりも常に大きくなります。
SELECT LEAST('22','+2.2','21'),
LEAST('0.2','22','21')
次の例では、各 LEAST は 3 つの文字列を比較し、照合順序の最も低い値を返します。
SELECT LEAST('A','a',''),
LEAST('a','aa','abc'),
LEAST('#','0','7'),
LEAST('##','00','77')
次の例では、キャノニック形式の数値として扱われる、$HOROLOG 整数としての生年月日と日付に変換される整数 58074 の 2 つの日付を比較しています。これは、20 世紀に生まれた各人の生年月日を返します。1999 年の 12 月 31 日よりも後に生まれた人は、2000 年 1 月 1 日というデフォルトの生年月日で表示されます。
SELECT Name,LEAST(DOB,TO_DATE(58074)) AS NewMillenium
FROM Sample.Person