docs-v2/content/shared/sql-reference/functions/conditional.md

6.0 KiB

The {{< product-name >}} SQL implementation supports the following conditional functions for conditionally handling null values:

coalesce

Returns the first of its arguments that is not null. Returns null if all arguments are null. This function is often used to substitute a default value for null values.

coalesce(expression1[, ..., expression_n])
Arguments
  • expression1, expression_n: Expression to use if previous expressions are null. Can be a constant, column, or function, and any combination of arithmetic operators. Pass as many expression arguments as necessary.

{{< expand-wrapper >}} {{% expand "View coalesce query example" %}}

SELECT
  val1,
  val2,
  val3,
  coalesce(val1, val2, val3, 'quz') AS coalesce
FROM
  (values ('foo', 'bar', 'baz'),
          (NULL, 'bar', 'baz'),
          (NULL, NULL, 'baz'),
          (NULL, NULL, NULL)
  ) data(val1, val2, val3)
val1 val2 val3 coalesce
foo bar baz foo
bar baz bar
baz baz
quz

{{% /expand %}} {{< /expand-wrapper >}}

ifnull

Alias of nvl.

nullif

Returns null if expression1 equals expression2; otherwise it returns expression1. This can be used to perform the inverse operation of coalesce.

nullif(expression1, expression2)
Arguments
  • expression1: Expression to compare and return if equal to expression2. Can be a constant, column, or function, and any combination of arithmetic operators.
  • expression2: Expression to compare to expression1. Can be a constant, column, or function, and any combination of arithmetic operators.

{{< expand-wrapper >}} {{% expand "View nullif query example" %}}

SELECT
  value,
  nullif(value, 'baz') AS nullif
FROM
  (values ('foo'),
          ('bar'),
          ('baz')
  ) data(value)
value nullif
foo foo
bar bar
baz

{{% /expand %}} {{< /expand-wrapper >}}

nvl

Returns expression2 if expression1 is null; otherwise it returns expression1.

nvl(expression1, expression2)
Arguments
  • expression1: Return this expression if not null. Can be a constant, column, or function, and any combination of arithmetic operators.
  • expression2: Return this expression if expression1 is null. Can be a constant, column, or function, and any combination of arithmetic operators.

{{< expand-wrapper >}} {{% expand "View nvl query example" %}}

SELECT
  value,
  nvl(value, 'baz') AS nvl
FROM
  (values ('foo'),
          ('bar'),
          (NULL)
  ) data(value)
value nvl
foo foo
bar bar
baz

{{% /expand %}} {{< /expand-wrapper >}}

nvl2

Returns expression2 if expression1 is not null; otherwise it returns expression3.

nvl2(expression1, expression2, expression3)
Arguments
  • expression1: First expression to test for null. Can be a constant, column, or function, and any combination of operators.
  • expression2: Second expression to return if expression1 is not null. Can be a constant, column, or function, and any combination of operators.
  • expression3: Expression to return if expression1 is null. Can be a constant, column, or function, and any combination of operators.

{{< expand-wrapper >}} {{% expand "View nvl2 query example" %}}

SELECT
  val1,
  val2,
  val3,
  nvl2(val1, val2, val3) AS nvl2
FROM
  (values ('foo', 'bar', 'baz'),
          (NULL, 'bar', 'baz'),
          (NULL, NULL, 'baz'),
  ) data(val1, val2, val3)
val1 val2 val3 nvl2
foo bar baz bar
bar baz baz
baz baz

{{% /expand %}} {{< /expand-wrapper >}}