279 lines
4.9 KiB
Plaintext
279 lines
4.9 KiB
Plaintext
[role="xpack"]
|
|
[testenv="basic"]
|
|
[[sql-functions-conditional]]
|
|
=== Conditional Functions
|
|
|
|
beta[]
|
|
|
|
Functions that return one of their arguments by evaluating in an if-else manner.
|
|
|
|
[[sql-functions-conditional-coalesce]]
|
|
==== `COALESCE`
|
|
|
|
.Synopsis
|
|
[source, sql]
|
|
----
|
|
COALESCE ( expression<1>, expression<2>, ... )
|
|
----
|
|
|
|
*Input*:
|
|
|
|
<1> 1st expression
|
|
|
|
<2> 2nd expression
|
|
|
|
...
|
|
|
|
**N**th expression
|
|
|
|
COALESCE can take an arbitrary number of arguments.
|
|
|
|
*Output*: one of the expressions or `null`
|
|
|
|
.Description
|
|
|
|
Returns the first of its arguments that is not null.
|
|
If all arguments are null, then it returns `null`.
|
|
|
|
|
|
|
|
["source","sql",subs="attributes,callouts,macros"]
|
|
----
|
|
include-tagged::{sql-specs}/docs.csv-spec[coalesceReturnNonNull]
|
|
----
|
|
|
|
["source","sql",subs="attributes,callouts,macros"]
|
|
----
|
|
include-tagged::{sql-specs}/docs.csv-spec[coalesceReturnNull]
|
|
----
|
|
|
|
|
|
[[sql-functions-conditional-ifnull]]
|
|
==== `IFNULL`
|
|
|
|
.Synopsis
|
|
[source, sql]
|
|
----
|
|
IFNULL ( expression<1>, expression<2> )
|
|
----
|
|
|
|
*Input*:
|
|
|
|
<1> 1st expression
|
|
|
|
<2> 2nd expression
|
|
|
|
|
|
*Output*: 2nd expression if 1st expression is null, otherwise 1st expression.
|
|
|
|
.Description
|
|
|
|
Variant of <<sql-functions-conditional-coalesce>> with only two arguments.
|
|
Returns the first of its arguments that is not null.
|
|
If all arguments are null, then it returns `null`.
|
|
|
|
|
|
|
|
["source","sql",subs="attributes,callouts,macros"]
|
|
----
|
|
include-tagged::{sql-specs}/docs.csv-spec[ifNullReturnFirst]
|
|
----
|
|
|
|
["source","sql",subs="attributes,callouts,macros"]
|
|
----
|
|
include-tagged::{sql-specs}/docs.csv-spec[ifNullReturnSecond]
|
|
----
|
|
|
|
|
|
[[sql-functions-conditional-isnull]]
|
|
==== `ISNULL`
|
|
|
|
.Synopsis
|
|
[source, sql]
|
|
----
|
|
ISNULL ( expression<1>, expression<2> )
|
|
----
|
|
|
|
*Input*:
|
|
|
|
<1> 1st expression
|
|
|
|
<2> 2nd expression
|
|
|
|
|
|
*Output*: 2nd expression if 1st expression is null, otherwise 1st expression.
|
|
|
|
.Description
|
|
|
|
Variant of <<sql-functions-conditional-coalesce>> with only two arguments.
|
|
Returns the first of its arguments that is not null.
|
|
If all arguments are null, then it returns `null`.
|
|
|
|
|
|
|
|
["source","sql",subs="attributes,callouts,macros"]
|
|
----
|
|
include-tagged::{sql-specs}/docs.csv-spec[isNullReturnFirst]
|
|
----
|
|
|
|
["source","sql",subs="attributes,callouts,macros"]
|
|
----
|
|
include-tagged::{sql-specs}/docs.csv-spec[isNullReturnSecond]
|
|
----
|
|
|
|
|
|
[[sql-functions-conditional-nvl]]
|
|
==== `NVL`
|
|
|
|
.Synopsis
|
|
[source, sql]
|
|
----
|
|
NVL ( expression<1>, expression<2> )
|
|
----
|
|
|
|
*Input*:
|
|
|
|
<1> 1st expression
|
|
|
|
<2> 2nd expression
|
|
|
|
|
|
*Output*: 2nd expression if 1st expression is null, otherwise 1st expression.
|
|
|
|
.Description
|
|
|
|
Variant of <<sql-functions-conditional-coalesce>> with only two arguments.
|
|
Returns the first of its arguments that is not null.
|
|
If all arguments are null, then it returns `null`.
|
|
|
|
|
|
|
|
["source","sql",subs="attributes,callouts,macros"]
|
|
----
|
|
include-tagged::{sql-specs}/docs.csv-spec[nvlReturnFirst]
|
|
----
|
|
|
|
["source","sql",subs="attributes,callouts,macros"]
|
|
----
|
|
include-tagged::{sql-specs}/docs.csv-spec[nvlReturnSecond]
|
|
----
|
|
|
|
|
|
[[sql-functions-conditional-nullif]]
|
|
==== `NULLIF`
|
|
|
|
.Synopsis
|
|
[source, sql]
|
|
----
|
|
NULLIF ( expression<1>, expression<2> )
|
|
----
|
|
|
|
*Input*:
|
|
|
|
<1> 1st expression
|
|
|
|
<2> 2nd expression
|
|
|
|
|
|
*Output*: `null` if the 2 expressions are equal, otherwise the 1st expression.
|
|
|
|
.Description
|
|
|
|
Returns `null` when the two input expressions are equal and
|
|
if not, it returns the 1st expression.
|
|
|
|
|
|
["source","sql",subs="attributes,callouts,macros"]
|
|
----
|
|
include-tagged::{sql-specs}/docs.csv-spec[nullIfReturnFirst]
|
|
----
|
|
|
|
["source","sql",subs="attributes,callouts,macros"]
|
|
----
|
|
include-tagged::{sql-specs}/docs.csv-spec[nullIfReturnNull]
|
|
----
|
|
|
|
|
|
[[sql-functions-conditional-greatest]]
|
|
==== `GREATEST`
|
|
|
|
.Synopsis
|
|
[source, sql]
|
|
----
|
|
GREATEST ( expression<1>, expression<2>, ... )
|
|
----
|
|
|
|
*Input*:
|
|
|
|
<1> 1st expression
|
|
|
|
<2> 2nd expression
|
|
|
|
...
|
|
|
|
**N**th expression
|
|
|
|
GREATEST can take an arbitrary number of arguments and
|
|
all of them must be of the same data type.
|
|
|
|
*Output*: one of the expressions or `null`
|
|
|
|
.Description
|
|
|
|
Returns the argument that has the largest value which is not null.
|
|
If all arguments are null, then it returns `null`.
|
|
|
|
|
|
|
|
["source","sql",subs="attributes,callouts,macros"]
|
|
----
|
|
include-tagged::{sql-specs}/docs.csv-spec[greatestReturnNonNull]
|
|
----
|
|
|
|
["source","sql",subs="attributes,callouts,macros"]
|
|
----
|
|
include-tagged::{sql-specs}/docs.csv-spec[greatestReturnNull]
|
|
----
|
|
|
|
|
|
[[sql-functions-conditional-least]]
|
|
==== `LEAST`
|
|
|
|
.Synopsis
|
|
[source, sql]
|
|
----
|
|
LEAST ( expression<1>, expression<2>, ... )
|
|
----
|
|
|
|
*Input*:
|
|
|
|
<1> 1st expression
|
|
|
|
<2> 2nd expression
|
|
|
|
...
|
|
|
|
**N**th expression
|
|
|
|
LEAST can take an arbitrary number of arguments and
|
|
all of them must be of the same data type.
|
|
|
|
*Output*: one of the expressions or `null`
|
|
|
|
.Description
|
|
|
|
Returns the argument that has the smallest value which is not null.
|
|
If all arguments are null, then it returns `null`.
|
|
|
|
|
|
|
|
["source","sql",subs="attributes,callouts,macros"]
|
|
----
|
|
include-tagged::{sql-specs}/docs.csv-spec[leastReturnNonNull]
|
|
----
|
|
|
|
["source","sql",subs="attributes,callouts,macros"]
|
|
----
|
|
include-tagged::{sql-specs}/docs.csv-spec[leastReturnNull]
|
|
----
|