メインコンテンツへスキップ

assumeNotNull

導入バージョン: v1.1.0 Nullable 型の値に対して、対応する非 Nullable 型の値を返します。 元の値が NULL の場合は、任意の結果が返されることがあります。 関連項目: 関数 ifNull および coalesce 構文
assumeNotNull(x)
引数
  • x — 任意の Nullable 型の元の値。Nullable(T)
戻り値 元の値が NULL でない場合は非 Nullable の値を返し、入力値が NULL の場合は任意の値を返します。Any 使用例
Query
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 table;
SELECT toTypeName(assumeNotNull(y)) FROM t_null;
Response
┌─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 使用例
Query
-- 顧客への連絡方法を複数指定できる連絡先リストを考えます。

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);

-- mail と phone フィールドは String 型ですが、telegram フィールドは UInt32 型であるため、String に変換する必要があります。

-- 連絡先リストから顧客の利用可能な最初の連絡方法を取得します

SELECT name, coalesce(mail, phone, CAST(telegram,'Nullable(String)')) FROM aBook;
Response
┌─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 番目の引数 - ... — 追加の判定対象引数
戻り値 結果の型は、すべての引数の共通のスーパータイプです 整数
Query
SELECT firstNonDefault(0, 1, 2)
Response
1
文字列
Query
SELECT firstNonDefault('', 'hello', 'world')
Response
'hello'
NULL値
Query
SELECT firstNonDefault(NULL, 0 :: UInt8, 1 :: UInt8)
Response
1
Nullable 型のゼロ値
Query
SELECT firstNonDefault(NULL, 0 :: Nullable(UInt8), 1 :: Nullable(UInt8))
Response
0

ifNull

導入バージョン: v1.1.0 最初の引数が NULL の場合は、代わりの値を返します。 構文
ifNull(x, alt)
引数
  • xNULL かどうかを判定する値。Any
  • altxNULL の場合に関数が返す値。Any
戻り値 xNULL でなければその値を返し、NULL の場合は alt を返します。Any 使用例
Query
SELECT ifNull('a', 'b'), ifNull(NULL, 'b');
Response
┌─ifNull('a', 'b')─┬─ifNull(NULL, 'b')─┐
│ a                │ b                 │
└──────────────────┴───────────────────┘

isNotNull

導入バージョン: v1.1.0 引数が NULL でないかを確認します。 あわせて参照: 演算子 IS NOT NULL 構文
isNotNull(x)
引数
  • x — 非複合データ型の値。Any
戻り値 xNULL でない場合は 1、そうでない場合は 0 を返します。UInt8 使用例
Query
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);
Response
┌─x─┐
│ 2 │
└───┘

isNull

導入バージョン: v1.1.0 引数が NULL であるかどうかを確認します。 あわせて参照: 演算子 IS NULL 構文
isNull(x)
引数
  • x — 非複合データ型の値です。Any
戻り値 xNULL の場合は 1、それ以外の場合は 0 を返します。UInt8 使用例
Query
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);
Response
┌─x─┐
│ 1 │
└───┘

isNullable

導入バージョン: v22.7.0 引数のデータ型が Nullable (つまり NULL 値を許容する型) かどうかを判定します。 構文
isNullable(x)
引数
  • x — 任意のデータ型の値。Any
戻り値 xNullable データ型であれば 1、それ以外は 0 を返します。UInt8 使用例
Query
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;
Response
┌───isNullable(ordinary_col)──┬───isNullable(nullable_col)──┐
│                           0 │                           1 │
│                           0 │                           1 │
│                           0 │                           1 │
└─────────────────────────────┴─────────────────────────────┘

isZeroOrNull

導入バージョン: v20.3.0 引数がゼロ (0) または NULL かどうかを返します。 構文
isZeroOrNull(x)
引数
  • x — 数値。UInt
戻り値 xNULL または 0 に等しい場合は 1、それ以外の場合は 0 を返します。UInt8/16/32/64 または Float32/Float64 使用例
Query
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);
Response
┌─x─┐
│ 1 │
│ 2 │
└───┘

nullIf

導入バージョン: v1.1.0 2 つの引数が等しい場合は NULL を返します。 構文
nullIf(x, y)
引数
  • x — 1 つ目の値。Any
  • y — 2 つ目の値。Any
戻り値 2 つの引数が等しい場合は NULL を返し、それ以外の場合は 1 つ目の引数を返します。NULL または Nullable(x) 使用例
Query
SELECT nullIf(1, 1), nullIf(1, 2);
Response
┌─nullIf(1, 1)─┬─nullIf(1, 2)─┐
│         ᴺᵁᴸᴸ │            1 │
└──────────────┴──────────────┘

toNullable

導入バージョン: v1.1.0 指定された引数の型を Nullable に変換します。 構文
toNullable(x)
引数
  • x — 任意の非複合型の値。Any
戻り値 入力値を Nullable 型に変換した値を返します。Nullable(Any) 使用例
Query
SELECT toTypeName(10), toTypeName(toNullable(10));
Response
┌─toTypeName(10)─┬─toTypeName(toNullable(10))─┐
│ UInt8          │ Nullable(UInt8)            │
└────────────────┴────────────────────────────┘
最終更新日 2026年6月10日