Functions for Working with Nullable Values
isNull
Returns whether the argument is NULL.
isNull(x)
Alias: ISNULL.
Arguments
- x— A value of non-compound data type.
Returned value
- 1if- xis- NULL.
- 0if- xis not- NULL.
Example
Table:
┌─x─┬────y─┐
│ 1 │ ᴺᵁᴸᴸ │
│ 2 │    3 │
└───┴──────┘
Query:
SELECT x FROM t_null WHERE isNull(y);
Result:
┌─x─┐
│ 1 │
└───┘
isNotNull
Returns whether the argument is not NULL.
isNotNull(x)
Arguments:
- x— A value of non-compound data type.
Returned value
- 1if- xis not- NULL.
- 0if- xis- NULL.
Example
Table:
┌─x─┬────y─┐
│ 1 │ ᴺᵁᴸᴸ │
│ 2 │    3 │
└───┴──────┘
Query:
SELECT x FROM t_null WHERE isNotNull(y);
Result:
┌─x─┐
│ 2 │
└───┘
isZeroOrNull
Returns whether the argument is 0 (zero) or NULL.
isZeroOrNull(x)
Arguments:
- x— A value of non-compound data type.
Returned value
- 1if- xis 0 (zero) or- NULL.
- 0else.
Example
Table:
┌─x─┬────y─┐
│ 1 │ ᴺᵁᴸᴸ │
│ 2 │    0 │
│ 3 │    3 │
└───┴──────┘
Query:
SELECT x FROM t_null WHERE isZeroOrNull(y);
Result:
┌─x─┐
│ 1 │
│ 2 │
└───┘
coalesce
Returns the leftmost non-NULL argument.
coalesce(x,...)
Arguments:
- Any number of parameters of non-compound type. All parameters must be of mutually compatible data types.
Returned values
- The first non-NULLargument
- NULL, if all arguments are- NULL.
Example
Consider a list of contacts that may specify multiple ways to contact a customer.
┌─name─────┬─mail─┬─phone─────┬──telegram─┐
│ client 1 │ ᴺᵁᴸᴸ │ 123-45-67 │       123 │
│ client 2 │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ      │      ᴺᵁᴸᴸ │
└──────────┴──────┴───────────┴───────────┘
The mail and phone fields are of type String, but the icq field is UInt32, so it needs to be converted to String.
Get the first available contact method for the customer from the contact list:
SELECT name, coalesce(mail, phone, CAST(telegram,'Nullable(String)')) FROM aBook;
┌─name─────┬─coalesce(mail, phone, CAST(telegram, 'Nullable(String)'))─┐
│ client 1 │ 123-45-67                                                 │
│ client 2 │ ᴺᵁᴸᴸ                                                      │
└──────────┴───────────────────────────────────────────────────────────┘
ifNull
Returns an alternative value if the argument is NULL.
ifNull(x, alt)
Arguments:
- x— The value to check for- NULL.
- alt— The value that the function returns if- xis- NULL.
Returned values
- xif- xis not- NULL.
- altif- xis- NULL.
Example
Query:
SELECT ifNull('a', 'b');
Result:
┌─ifNull('a', 'b')─┐
│ a                │
└──────────────────┘
Query:
SELECT ifNull(NULL, 'b');
Result:
┌─ifNull(NULL, 'b')─┐
│ b                 │
└───────────────────┘
nullIf
Returns NULL if both arguments are equal.
nullIf(x, y)
Arguments:
x, y — Values to compare. Must be of compatible types.
Returned values
- NULLif the arguments are equal.
- xif the arguments are not equal.
Example
Query:
SELECT nullIf(1, 1);
Result:
┌─nullIf(1, 1)─┐
│         ᴺᵁᴸᴸ │
└──────────────┘
Query:
SELECT nullIf(1, 2);
Result:
┌─nullIf(1, 2)─┐
│            1 │
└──────────────┘
assumeNotNull
Returns the corresponding non-Nullable value for a value of Nullable type. If the original value is NULL, an arbitrary result can be returned. See also functions ifNull and coalesce.
assumeNotNull(x)
Arguments:
- x— The original value.
Returned values
- The input value as non-Nullabletype, if it is notNULL.
- An arbitrary value, if the input value is NULL.
Example
Table:
┌─x─┬────y─┐
│ 1 │ ᴺᵁᴸᴸ │
│ 2 │    3 │
└───┴──────┘
Query:
SELECT assumeNotNull(y) FROM table;
Result:
┌─assumeNotNull(y)─┐
│                0 │
│                3 │
└──────────────────┘
Query:
SELECT toTypeName(assumeNotNull(y)) FROM t_null;
Result:
┌─toTypeName(assumeNotNull(y))─┐
│ Int8                         │
│ Int8                         │
└──────────────────────────────┘
toNullable
Converts the argument type to Nullable.
toNullable(x)
Arguments:
- x— A value of non-compound type.
Returned value
- The input value but of Nullabletype.
Example
Query:
SELECT toTypeName(10);
Result:
┌─toTypeName(10)─┐
│ UInt8          │
└────────────────┘
Query:
SELECT toTypeName(toNullable(10));
Result:
┌─toTypeName(toNullable(10))─┐
│ Nullable(UInt8)            │
└────────────────────────────┘