assumeNotNull
導入バージョン: v1.1.0
Nullable 型の値に対して、対応する非 Nullable 型の値を返します。
元の値が NULL の場合は、任意の結果が返されることがあります。
あわせて参照: 関数 ifNull および coalesce。
構文
assumeNotNull(x)引数
x— 任意の Nullable 型の元の値。Nullable(T)
戻り値
元の値が NULL でない場合は非 Nullable の値を返し、入力値が NULL の場合は任意の値を返します。Any
例
使用例
CREATE TABLE t_null (x Int8, y Nullable(Int8))
ENGINE=MergeTree()
ORDER BY x;
INSERT INTO t_null VALUES (1, NULL), (2, 3);
SELECT assumeNotNull(y) FROM t_null;
SELECT toTypeName(assumeNotNull(y)) FROM t_null;┌─assumeNotNull(y)─┐
│ 0 │
│ 3 │
└──────────────────┘
┌─toTypeName(assumeNotNull(y))─┐
│ Int8 │
│ Int8 │
└──────────────────────────────┘coalesce
導入バージョン: v1.1.0
左端にある NULL 以外の引数を返します。
構文
coalesce(x[, y, ...])引数
x[, y, ...]— 複合型でない型のパラメータを任意の数だけ指定できます。すべてのパラメータは、互換性のあるデータ型である必要があります。Any
戻り値
最初の非NULLの引数を返します。すべての引数がNULLの場合は、NULLを返します。Any または NULL
例
使用例
-- Consider a list of contacts that may specify multiple ways to contact a customer.
CREATE TABLE aBook
(
name String,
mail Nullable(String),
phone Nullable(String),
telegram Nullable(UInt32)
)
ENGINE = MergeTree
ORDER BY tuple();
INSERT INTO aBook VALUES ('client 1', NULL, '123-45-67', 123), ('client 2', NULL, NULL, NULL);
-- The mail and phone fields are of type String, but the telegram 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 │ ᴺᵁᴸᴸ │
└──────────┴───────────────────────────────────────────────────────────┘firstNonDefault
導入バージョン: v25.9.0
一連の引数の中から、最初の非デフォルト値を返します
構文
firstNonDefault(arg1[, arg2[ ...]])引数
arg1— 判定対象の最初の引数 -arg2— 判定対象の 2 番目の引数 -...— 追加の判定対象引数
戻り値
結果の型は、すべての引数の共通のスーパータイプです
例
整数
SELECT firstNonDefault(0, 1, 2)1文字列
SELECT firstNonDefault('', 'hello', 'world')helloNULL値
SELECT firstNonDefault(NULL, 0 :: UInt8, 1 :: UInt8)1Nullable 型のゼロ値
SELECT firstNonDefault(NULL, 0 :: Nullable(UInt8), 1 :: Nullable(UInt8))0ifNull
導入バージョン: v1.1.0
最初の引数が NULL の場合は、代わりの値を返します。
構文
ifNull(x, alt)引数
戻り値
x が NULL でなければその値を返し、NULL の場合は alt を返します。Any
例
使用例
SELECT ifNull('a', 'b'), ifNull(NULL, 'b');┌─ifNull('a', 'b')─┬─ifNull(NULL, 'b')─┐
│ a │ b │
└──────────────────┴───────────────────┘isNotNull
導入バージョン: v1.1.0
引数が NULL でないかを確認します。
あわせて参照: 演算子 IS NOT NULL。
構文
isNotNull(x)引数
x— 非複合データ型の値。Any
戻り値
x が NULL でない場合は 1、そうでない場合は 0 を返します。UInt8
例
使用例
CREATE TABLE t_null
(
x Int32,
y Nullable(Int32)
)
ENGINE = MergeTree
ORDER BY tuple();
INSERT INTO t_null VALUES (1, NULL), (2, 3);
SELECT x FROM t_null WHERE isNotNull(y);┌─x─┐
│ 2 │
└───┘isNull
導入バージョン: v1.1.0
引数が NULL であるかどうかを確認します。
あわせて参照: 演算子 IS NULL。
構文
isNull(x)引数
x— 非複合データ型の値です。Any
戻り値
x が NULL の場合は 1、それ以外の場合は 0 を返します。UInt8
例
使用例
CREATE TABLE t_null
(
x Int32,
y Nullable(Int32)
)
ENGINE = MergeTree
ORDER BY tuple();
INSERT INTO t_null VALUES (1, NULL), (2, 3);
SELECT x FROM t_null WHERE isNull(y);┌─x─┐
│ 1 │
└───┘isNullable
導入バージョン: v22.7.0
引数のデータ型が Nullable (つまり NULL 値を許容する型) かどうかを判定します。
構文
isNullable(x)引数
x— 任意のデータ型の値。Any
戻り値
x が Nullable データ型であれば 1、それ以外は 0 を返します。UInt8
例
使用例
CREATE TABLE tab (
ordinary_col UInt32,
nullable_col Nullable(UInt32)
)
ENGINE = MergeTree
ORDER BY tuple();
INSERT INTO tab (ordinary_col, nullable_col) VALUES (1,1), (2, 2), (3,3);
SELECT isNullable(ordinary_col), isNullable(nullable_col) FROM tab;┌─isNullable(ordinary_col)─┬─isNullable(nullable_col)─┐
│ 0 │ 1 │
│ 0 │ 1 │
│ 0 │ 1 │
└──────────────────────────┴──────────────────────────┘isZeroOrNull
導入バージョン: v20.3.0
引数がゼロ (0) または NULL かどうかを返します。
構文
isZeroOrNull(x)引数
x— 数値。UInt
戻り値
x が NULL または 0 に等しい場合は 1、それ以外の場合は 0 を返します。UInt8/16/32/64 または Float32/Float64
例
使用例
CREATE TABLE t_null
(
x Int32,
y Nullable(Int32)
)
ENGINE = MergeTree
ORDER BY tuple();
INSERT INTO t_null VALUES (1, NULL), (2, 0), (3, 3);
SELECT x FROM t_null WHERE isZeroOrNull(y);┌─x─┐
│ 1 │
│ 2 │
└───┘nullIf
導入バージョン: v1.1.0
2 つの引数が等しい場合は NULL を返します。
構文
nullIf(x, y)引数
戻り値
2 つの引数が等しい場合は NULL を返し、それ以外の場合は 1 つ目の引数を返します。NULL または Nullable(x)
例
使用例
SELECT nullIf(1, 1), nullIf(1, 2);┌─nullIf(1, 1)─┬─nullIf(1, 2)─┐
│ ᴺᵁᴸᴸ │ 1 │
└──────────────┴──────────────┘toNullable
導入バージョン: v1.1.0
指定された引数の型を Nullable に変換します。
構文
toNullable(x)引数
x— 任意の非複合型の値。Any
戻り値
入力値を Nullable 型に変換した値を返します。Nullable(Any)
例
使用例
SELECT toTypeName(10), toTypeName(toNullable(10));┌─toTypeName(10)─┬─toTypeName(toNullable(10))─┐
│ UInt8 │ Nullable(UInt8) │
└────────────────┴────────────────────────────┘