> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-8a08bda2.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Nullable 型の値を扱う関数のドキュメント

# Nullable 型の値を扱う関数

{/*AUTOGENERATED_START*/}

<div id="assumeNotNull">
  ## assumeNotNull
</div>

導入バージョン: v1.1.0

[`Nullable`](/ja/reference/data-types/nullable) 型の値に対して、対応する非 `Nullable` 型の値を返します。
元の値が `NULL` の場合は、任意の結果が返されることがあります。

関連項目: 関数 [`ifNull`](#ifNull) および [`coalesce`](#coalesce)。

**構文**

```sql theme={null}
assumeNotNull(x)
```

**引数**

* `x` — 任意の Nullable 型の元の値。[`Nullable(T)`](/ja/reference/data-types/nullable)

**戻り値**

元の値が `NULL` でない場合は非 Nullable の値を返し、入力値が `NULL` の場合は任意の値を返します。[`Any`](/ja/reference/data-types)

**例**

**使用例**

```sql title=Query theme={null}
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 title=Response theme={null}
┌─assumeNotNull(y)─┐
│                0 │
│                3 │
└──────────────────┘
┌─toTypeName(assumeNotNull(y))─┐
│ Int8                         │
│ Int8                         │
└──────────────────────────────┘
```

<div id="coalesce">
  ## coalesce
</div>

導入バージョン: v1.1.0

左端にある `NULL` 以外の引数を返します。

**構文**

```sql theme={null}
coalesce(x[, y, ...])
```

**引数**

* `x[, y, ...]` — 複合型でない型のパラメータを任意の数だけ指定できます。すべてのパラメータは、互換性のあるデータ型である必要があります。[`Any`](/ja/reference/data-types)

**戻り値**

最初の非`NULL`の引数を返します。すべての引数が`NULL`の場合は、`NULL`を返します。[`Any`](/ja/reference/data-types) または [`NULL`](/ja/reference/syntax#null)

**例**

**使用例**

```sql title=Query theme={null}
-- 顧客への連絡方法を複数指定できる連絡先リストを考えます。

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 title=Response theme={null}
┌─name─────┬─coalesce(mail, phone, CAST(telegram, 'Nullable(String)'))─┐
│ client 1 │ 123-45-67                                                 │
│ client 2 │ ᴺᵁᴸᴸ                                                      │
└──────────┴───────────────────────────────────────────────────────────┘
```

<div id="firstNonDefault">
  ## firstNonDefault
</div>

導入バージョン: v25.9.0

一連の引数の中から、最初の非デフォルト値を返します

**構文**

```sql theme={null}
firstNonDefault(arg1[, arg2[ ...]])
```

**引数**

* `arg1` — 判定対象の最初の引数 - `arg2` — 判定対象の 2 番目の引数 - `...` — 追加の判定対象引数

**戻り値**

結果の型は、すべての引数の共通のスーパータイプです

**例**

**整数**

```sql title=Query theme={null}
SELECT firstNonDefault(0, 1, 2)
```

```response title=Response theme={null}
1
```

**文字列**

```sql title=Query theme={null}
SELECT firstNonDefault('', 'hello', 'world')
```

```response title=Response theme={null}
'hello'
```

**NULL値**

```sql title=Query theme={null}
SELECT firstNonDefault(NULL, 0 :: UInt8, 1 :: UInt8)
```

```response title=Response theme={null}
1
```

**Nullable 型のゼロ値**

```sql title=Query theme={null}
SELECT firstNonDefault(NULL, 0 :: Nullable(UInt8), 1 :: Nullable(UInt8))
```

```response title=Response theme={null}
0
```

<div id="ifNull">
  ## ifNull
</div>

導入バージョン: v1.1.0

最初の引数が `NULL` の場合は、代わりの値を返します。

**構文**

```sql theme={null}
ifNull(x, alt)
```

**引数**

* `x` — `NULL` かどうかを判定する値。[`Any`](/ja/reference/data-types)
* `alt` — `x` が `NULL` の場合に関数が返す値。[`Any`](/ja/reference/data-types)

**戻り値**

`x` が `NULL` でなければその値を返し、`NULL` の場合は `alt` を返します。[`Any`](/ja/reference/data-types)

**例**

**使用例**

```sql title=Query theme={null}
SELECT ifNull('a', 'b'), ifNull(NULL, 'b');
```

```response title=Response theme={null}
┌─ifNull('a', 'b')─┬─ifNull(NULL, 'b')─┐
│ a                │ b                 │
└──────────────────┴───────────────────┘
```

<div id="isNotNull">
  ## isNotNull
</div>

導入バージョン: v1.1.0

引数が `NULL` でないかを確認します。

あわせて参照: 演算子 [`IS NOT NULL`](/ja/reference/operators#is_not_null)。

**構文**

```sql theme={null}
isNotNull(x)
```

**引数**

* `x` — 非複合データ型の値。[`Any`](/ja/reference/data-types)

**戻り値**

`x` が `NULL` でない場合は `1`、そうでない場合は `0` を返します。[`UInt8`](/ja/reference/data-types/int-uint)

**例**

**使用例**

```sql title=Query theme={null}
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 title=Response theme={null}
┌─x─┐
│ 2 │
└───┘
```

<div id="isNull">
  ## isNull
</div>

導入バージョン: v1.1.0

引数が `NULL` であるかどうかを確認します。

あわせて参照: 演算子 [`IS NULL`](/ja/reference/operators#is_null)。

**構文**

```sql theme={null}
isNull(x)
```

**引数**

* `x` — 非複合データ型の値です。[`Any`](/ja/reference/data-types)

**戻り値**

`x` が `NULL` の場合は `1`、それ以外の場合は `0` を返します。[`UInt8`](/ja/reference/data-types/int-uint)

**例**

**使用例**

```sql title=Query theme={null}
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 title=Response theme={null}
┌─x─┐
│ 1 │
└───┘
```

<div id="isNullable">
  ## isNullable
</div>

導入バージョン: v22.7.0

引数のデータ型が `Nullable` (つまり `NULL` 値を許容する型) かどうかを判定します。

**構文**

```sql theme={null}
isNullable(x)
```

**引数**

* `x` — 任意のデータ型の値。[`Any`](/ja/reference/data-types)

**戻り値**

`x` が `Nullable` データ型であれば `1`、それ以外は `0` を返します。[`UInt8`](/ja/reference/data-types/int-uint)

**例**

**使用例**

```sql title=Query theme={null}
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 title=Response theme={null}
┌───isNullable(ordinary_col)──┬───isNullable(nullable_col)──┐
│                           0 │                           1 │
│                           0 │                           1 │
│                           0 │                           1 │
└─────────────────────────────┴─────────────────────────────┘
```

<div id="isZeroOrNull">
  ## isZeroOrNull
</div>

導入バージョン: v20.3.0

引数がゼロ (`0`) または `NULL` かどうかを返します。

**構文**

```sql theme={null}
isZeroOrNull(x)
```

**引数**

* `x` — 数値。[`UInt`](/ja/reference/data-types/int-uint)

**戻り値**

`x` が `NULL` または 0 に等しい場合は `1`、それ以外の場合は `0` を返します。[`UInt8/16/32/64`](/ja/reference/data-types/int-uint) または [`Float32/Float64`](/ja/reference/data-types/float)

**例**

**使用例**

```sql title=Query theme={null}
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 title=Response theme={null}
┌─x─┐
│ 1 │
│ 2 │
└───┘
```

<div id="nullIf">
  ## nullIf
</div>

導入バージョン: v1.1.0

2 つの引数が等しい場合は `NULL` を返します。

**構文**

```sql theme={null}
nullIf(x, y)
```

**引数**

* `x` — 1 つ目の値。[`Any`](/ja/reference/data-types)
* `y` — 2 つ目の値。[`Any`](/ja/reference/data-types)

**戻り値**

2 つの引数が等しい場合は `NULL` を返し、それ以外の場合は 1 つ目の引数を返します。[`NULL`](/ja/reference/syntax#null) または [`Nullable(x)`](/ja/reference/data-types/nullable)

**例**

**使用例**

```sql title=Query theme={null}
SELECT nullIf(1, 1), nullIf(1, 2);
```

```response title=Response theme={null}
┌─nullIf(1, 1)─┬─nullIf(1, 2)─┐
│         ᴺᵁᴸᴸ │            1 │
└──────────────┴──────────────┘
```

<div id="toNullable">
  ## toNullable
</div>

導入バージョン: v1.1.0

指定された引数の型を `Nullable` に変換します。

**構文**

```sql theme={null}
toNullable(x)
```

**引数**

* `x` — 任意の非複合型の値。[`Any`](/ja/reference/data-types)

**戻り値**

入力値を `Nullable` 型に変換した値を返します。[`Nullable(Any)`](/ja/reference/data-types/nullable)

**例**

**使用例**

```sql title=Query theme={null}
SELECT toTypeName(10), toTypeName(toNullable(10));
```

```response title=Response theme={null}
┌─toTypeName(10)─┬─toTypeName(toNullable(10))─┐
│ UInt8          │ Nullable(UInt8)            │
└────────────────┴────────────────────────────┘
```
