mirror of
https://github.com/postgres/postgres.git
synced 2025-07-27 12:41:57 +03:00
Add Oracle-compatible GREATEST and LEAST functions. Pavel Stehule
This commit is contained in:
@ -1,5 +1,5 @@
|
||||
<!--
|
||||
$PostgreSQL: pgsql/doc/src/sgml/func.sgml,v 1.259 2005/06/24 20:53:29 tgl Exp $
|
||||
$PostgreSQL: pgsql/doc/src/sgml/func.sgml,v 1.260 2005/06/26 22:05:35 tgl Exp $
|
||||
PostgreSQL documentation
|
||||
-->
|
||||
|
||||
@ -6901,6 +6901,39 @@ SELECT NULLIF(value, '(none)') ...
|
||||
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
<title><literal>GREATEST</literal> and <literal>LEAST</literal></title>
|
||||
|
||||
<indexterm>
|
||||
<primary>GREATEST</primary>
|
||||
</indexterm>
|
||||
<indexterm>
|
||||
<primary>LEAST</primary>
|
||||
</indexterm>
|
||||
|
||||
<synopsis>
|
||||
<function>GREATEST</function>(<replaceable>value</replaceable> <optional>, ...</optional>)
|
||||
</synopsis>
|
||||
<synopsis>
|
||||
<function>LEAST</function>(<replaceable>value</replaceable> <optional>, ...</optional>)
|
||||
</synopsis>
|
||||
|
||||
<para>
|
||||
The <function>GREATEST</> and <function>LEAST</> functions select the
|
||||
largest or smallest value from a list of any number of expressions.
|
||||
The expressions must all be convertible to a common data type, which
|
||||
will be the type of the result
|
||||
(see <xref linkend="typeconv-union-case"> for details). NULL values
|
||||
in the list are ignored. The result will be NULL only if all the
|
||||
expressions evaluate to NULL.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Note that <function>GREATEST</> and <function>LEAST</> are not in
|
||||
the SQL standard, but are a common extension.
|
||||
</para>
|
||||
</sect2>
|
||||
|
||||
</sect1>
|
||||
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
<!--
|
||||
$PostgreSQL: pgsql/doc/src/sgml/typeconv.sgml,v 1.43 2004/12/23 23:07:38 tgl Exp $
|
||||
$PostgreSQL: pgsql/doc/src/sgml/typeconv.sgml,v 1.44 2005/06/26 22:05:36 tgl Exp $
|
||||
-->
|
||||
|
||||
<chapter Id="typeconv">
|
||||
@ -120,7 +120,7 @@ with, and perhaps converted to, the types of the target columns.
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>UNION</literal>, <literal>CASE</literal>, and <literal>ARRAY</literal> constructs
|
||||
<literal>UNION</literal>, <literal>CASE</literal>, and related constructs
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
@ -129,7 +129,8 @@ must appear in a single set of columns, the types of the results of each
|
||||
<command>SELECT</> clause must be matched up and converted to a uniform set.
|
||||
Similarly, the result expressions of a <literal>CASE</> construct must be
|
||||
converted to a common type so that the <literal>CASE</> expression as a whole
|
||||
has a known output type. The same holds for <literal>ARRAY</> constructs.
|
||||
has a known output type. The same holds for <literal>ARRAY</> constructs,
|
||||
and for the <function>GREATEST</> and <function>LEAST</> functions.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
@ -782,7 +783,7 @@ padding spaces.
|
||||
</sect1>
|
||||
|
||||
<sect1 id="typeconv-union-case">
|
||||
<title><literal>UNION</literal>, <literal>CASE</literal>, and <literal>ARRAY</literal> Constructs</title>
|
||||
<title><literal>UNION</literal>, <literal>CASE</literal>, and Related Constructs</title>
|
||||
|
||||
<indexterm zone="typeconv-union-case">
|
||||
<primary>UNION</primary>
|
||||
@ -799,20 +800,31 @@ padding spaces.
|
||||
<secondary>determination of result type</secondary>
|
||||
</indexterm>
|
||||
|
||||
<indexterm zone="typeconv-union-case">
|
||||
<primary>GREATEST</primary>
|
||||
<secondary>determination of result type</secondary>
|
||||
</indexterm>
|
||||
|
||||
<indexterm zone="typeconv-union-case">
|
||||
<primary>LEAST</primary>
|
||||
<secondary>determination of result type</secondary>
|
||||
</indexterm>
|
||||
|
||||
<para>
|
||||
SQL <literal>UNION</> constructs must match up possibly dissimilar
|
||||
types to become a single result set. The resolution algorithm is
|
||||
applied separately to each output column of a union query. The
|
||||
<literal>INTERSECT</> and <literal>EXCEPT</> constructs resolve
|
||||
dissimilar types in the same way as <literal>UNION</>. The
|
||||
<literal>CASE</> and <literal>ARRAY</> constructs use the identical
|
||||
<literal>CASE</>, <literal>ARRAY</>, <function>GREATEST</> and
|
||||
<function>LEAST</> constructs use the identical
|
||||
algorithm to match up their component expressions and select a result
|
||||
data type.
|
||||
</para>
|
||||
|
||||
<procedure>
|
||||
<title><literal>UNION</literal>, <literal>CASE</literal>, and
|
||||
<literal>ARRAY</literal> Type Resolution</title>
|
||||
<title>Type Resolution for <literal>UNION</literal>, <literal>CASE</literal>,
|
||||
and Related Constructs</title>
|
||||
|
||||
<step performance="required">
|
||||
<para>
|
||||
|
Reference in New Issue
Block a user