> ## 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.

> 比較関数のリファレンス

# 比較関数

<div id="comparison-rules">
  ## 比較規則
</div>

以下の比較関数は、型 [UInt8](/ja/reference/data-types/int-uint) の `0` または `1` を返します。同じグループ内の値どうしのみ
比較できます (例: `UInt16` と `UInt64`) 。グループをまたぐ比較はできません (例: `UInt16` と `DateTime`) 。
数値と文字列の比較のほか、文字列と日付、日付と時刻の比較も可能です。
タプルと配列については、辞書式比較が行われます。つまり、左側と右側のタプル/配列の対応する
各要素ごとに比較されます。

次の型は比較できます:

* 数値と Decimal
* String と Fixed String
* 日付
* 日付と時刻
* タプル (辞書式比較)
* 配列 (辞書式比較)

<Note>
  String はバイト単位で比較されます。文字列のいずれか一方に UTF-8 でエンコードされたマルチバイト文字が含まれている場合、予期しない結果になることがあります。
  文字列 S1 が別の文字列 S2 をプレフィックスとして持つ場合、S1 は S2 より長いものと見なされます。
</Note>

{/*AUTOGENERATED_START*/}

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

導入バージョン: v1.1.0

2つの値が等しいかどうかを判定します。

**構文**

```sql theme={null}
equals(a, b)
        -- a = b
        -- a == b
```

**引数**

* `a` — 1 つ目の値。<sup>[\*](#comparison-rules)</sup> - `b` — 2 つ目の値。<sup>[\*](#comparison-rules)</sup>

**戻り値**

`a` が `b` と等しい場合は `1`、それ以外の場合は `0` を返します [`UInt8`](/ja/reference/data-types/int-uint)

**例**

**使用例**

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

```response title=Response theme={null}
┌─equals(1, 1)─┬─equals(1, 2)─┐
│            1 │            0 │
└──────────────┴──────────────┘
```

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

導入バージョン: v1.1.0

`in` と同じですが、分散クエリではグローバル Set 分散を使用します。Set はすべてのリモートサーバーに送信されます。

**構文**

```sql theme={null}
globalIn(x, set)
```

**引数**

* `x` — チェックする値。 - `set` — 値の集合。

**戻り値**

x が集合に含まれていれば 1、そうでなければ 0 を返します。[`UInt8`](/ja/reference/data-types/int-uint)

**例**

**基本的な使い方**

```sql title=Query theme={null}
SELECT 1 IN (1, 2, 3)
```

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

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

導入バージョン: v1.1.0

`in` と同様ですが、分散クエリではグローバル Set 分散を使用します。Set はすべてのリモートサーバーに送信されます。
これは、Set を作成せずに型解析を行うための IgnoreSet バリアントです。

**構文**

```sql theme={null}
globalIn(x, set)
```

**引数**

* `x` — 確認する値。 - `set` — 値の集合。

**戻り値**

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

**例**

**基本的な使い方**

```sql title=Query theme={null}
SELECT 1 IN (1, 2, 3)
```

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

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

導入バージョン: v1.1.0

`notIn` と同様ですが、分散クエリではグローバル Set 分散を使用します。Set はすべてのリモートサーバーに送信されます。

**構文**

```sql theme={null}
globalNotIn(x, set)
```

**引数**

* `x` — 確認する値。 - `set` — 値の集合。

**戻り値**

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

**例**

**基本的な使い方**

```sql title=Query theme={null}
SELECT 4 NOT IN (1, 2, 3)
```

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

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

導入バージョン: v1.1.0

`notIn` と同じですが、分散クエリでは global set distribution を使用します。セットはすべてのリモートサーバーに送信されます。
これは、セットを作成せずに型解析を行うための IgnoreSet バリアントです。

**構文**

```sql theme={null}
globalNotIn(x, set)
```

**引数**

* `x` — 確認する値。 - `set` — 値の集合。

**戻り値**

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

**例**

**基本的な使い方**

```sql title=Query theme={null}
SELECT 4 NOT IN (1, 2, 3)
```

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

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

導入バージョン: v1.1.0

`notNullIn` と同じですが、分散クエリではグローバル Set 分散を使用します。Set はすべてのリモートサーバーに送信されます。

**構文**

```sql theme={null}
globalNotNullIn(x, set)
```

**引数**

* `x` — 確認する値。 - `set` — 値のセット。

**戻り値**

`x` がセットに含まれていない場合は 1、含まれている場合は 0 を返します。 [`UInt8`](/ja/reference/data-types/int-uint)

**例**

**基本的な使い方**

```sql title=Query theme={null}
SELECT notNullIn(NULL, tuple(1, NULL))
```

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

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

導入バージョン: v1.1.0

`notNullIn` と同じですが、分散クエリではグローバル Set 分散を使用します。セットはすべてのリモートサーバーに送信されます。
これは、セットを作成せずに型解析を行うための IgnoreSet バリアントです。

**構文**

```sql theme={null}
globalNotNullIn(x, set)
```

**引数**

* `x` — 確認する値。 - `set` — 値のセット。

**戻り値**

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

**例**

**基本的な使い方**

```sql title=Query theme={null}
SELECT notNullIn(NULL, tuple(1, NULL))
```

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

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

導入バージョン: v1.1.0

分散クエリでグローバル Set 分散を使用する点を除き、`nullIn` と同じです。Set はすべてのリモートサーバーに送信されます。

**構文**

```sql theme={null}
globalNullIn(x, set)
```

**引数**

* `x` — 確認する値。 - `set` — 値の集合。

**戻り値**

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

**例**

**基本的な使い方**

```sql title=Query theme={null}
SELECT nullIn(NULL, tuple(1, NULL))
```

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

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

導入バージョン: v1.1.0

`nullIn` と同じですが、分散クエリではグローバル set distribution を使用します。set はすべてのリモートサーバーに送信されます。
これは、set を作成せずに型解析を行うための IgnoreSet バリアントです。

**構文**

```sql theme={null}
globalNullIn(x, set)
```

**引数**

* `x` — 判定する値。 - `set` — 値の集合。

**戻り値**

x が集合に含まれている場合は 1、含まれていない場合は 0 を返します。[`UInt8`](/ja/reference/data-types/int-uint)

**例**

**基本的な使い方**

```sql title=Query theme={null}
SELECT nullIn(NULL, tuple(1, NULL))
```

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

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

導入バージョン: v1.1.0

2つの値を比較し、一方が他方より大きいかどうかを判定します。

**構文**

```sql theme={null}
greater(a, b)
    -- a > b
```

**引数**

* `a` — 最初の値。<sup>[\*](#comparison-rules)</sup> - `b` — 2 番目の値。<sup>[\*](#comparison-rules)</sup>

**戻り値**

`a` が `b` より大きい場合は `1`、それ以外の場合は `0` を返します。 [`UInt8`](/ja/reference/data-types/int-uint)

**例**

**使用例**

```sql title=Query theme={null}
SELECT 2 > 1, 1 > 2;
```

```response title=Response theme={null}
┌─greater(2, 1)─┬─greater(1, 2)─┐
│             1 │             0 │
└───────────────┴───────────────┘
```

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

導入バージョン: v1.1.0

2 つの値が大なりイコールの関係にあるかどうかを比較します。

**構文**

```sql theme={null}
greaterOrEquals(a, b)
    -- a >= b
```

**引数**

* `a` — 1番目の値。<sup>[\*](#comparison-rules)</sup> - `b` — 2番目の値。<sup>[\*](#comparison-rules)</sup>

**戻り値**

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

**例**

**使用例**

```sql title=Query theme={null}
SELECT 2 >= 1, 2 >= 2, 1 >= 2;
```

```response title=Response theme={null}
┌─greaterOrEquals(2, 1)─┬─greaterOrEquals(2, 2)─┬─greaterOrEquals(1, 2)─┐
│                     1 │                     1 │                     0 │
└───────────────────────┴───────────────────────┴───────────────────────┘
```

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

導入バージョン: v1.1.0

左オペランドが右オペランドの集合に含まれているかどうかを確認します。含まれていれば 1、そうでなければ 0 を返します。左オペランド内の NULL 値はスキップされます (集合に含まれないものとして扱われます) 。

**構文**

```sql theme={null}
in(x, set)
```

**引数**

* `x` — 確認する値。 - `set` — 値の集合。

**戻り値**

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

**例**

**基本的な使い方**

```sql title=Query theme={null}
SELECT 1 IN (1, 2, 3)
```

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

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

導入バージョン: v1.1.0

左オペランドが右オペランドの集合に含まれるかどうかを判定します。含まれる場合は 1、そうでない場合は 0 を返します。左オペランドの NULL 値 は無視されます (集合に含まれないものとして扱われます) 。
これは、集合を作成せずに型解析に使用される IgnoreSet バリアントです。

**構文**

```sql theme={null}
in(x, set)
```

**引数**

* `x` — 判定対象の値。 - `set` — 値の集合。

**戻り値**

`x` が集合に含まれている場合は 1、含まれていない場合は 0 を返します。[`UInt8`](/ja/reference/data-types/int-uint)

**例**

**基本的な使い方**

```sql title=Query theme={null}
SELECT 1 IN (1, 2, 3)
```

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

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

導入バージョン: v25.11.0

2 つの値に対して、NULL を安全に扱う「等しくない」比較を行います。
値が異なる (等しくない) 場合は `true` を返します。これには、一方が NULL でもう一方が NULL ではない場合も含まれます。
値が等しい場合、または両方が NULL の場合は `false` を返します。

**構文**

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

**引数**

* `x` — 比較する最初の値。任意の ClickHouse データ型を指定できます。[`Any`](/ja/reference/data-types)
* `y` — 比較する2番目の値。任意の ClickHouse データ型を指定できます。[`Any`](/ja/reference/data-types)

**戻り値**

2 つの値が異なる場合は `true` を返します。NULL も比較対象として扱います。

* x != y の場合は `true` を返します。
  * x または y のどちらか一方だけが NULL の場合は `true` を返します。
  * x = y の場合、または x と y の両方が NULL の場合は `false` を返します。[`Bool`](/ja/reference/data-types/boolean)

**例**

**数値と NULL を使った基本的な使い方**

```sql title=Query theme={null}
SELECT
    isDistinctFrom(1, 2) AS result_1,
    isDistinctFrom(1, 1) AS result_2,
    isDistinctFrom(NULL, 1) AS result_3,
    isDistinctFrom(NULL, NULL) AS result_4
```

```response title=Response theme={null}
┌─result_1─┬─result_2─┬─result_3─┬─result_4─┐
│        1 │        0 │        1 │        0 │
└──────────┴──────────┴──────────┴──────────┘
```

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

導入バージョン: v23.8.0

2 つの値に対して、NULL を安全に扱う `equals` 比較を行います。
値が等しい場合は `true` を返します。両方が NULL の場合も含まれます。
値が異なる場合、または一方だけが NULL の場合は `false` を返します。

**構文**

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

**引数**

* `x` — 比較する最初の値。任意の ClickHouse のデータ型を指定できます。[`Any`](/ja/reference/data-types)
* `y` — 比較する2番目の値。任意の ClickHouse のデータ型を指定できます。[`Any`](/ja/reference/data-types)

**戻り値**

2つの値が等しい場合は `true` を返します。NULL は比較可能な値として扱われます。

* x = y の場合は `true` を返します。
  * x と y の両方が NULL の場合は `true` を返します。
  * x != y の場合、または x と y のどちらか一方だけが NULL の場合は `false` を返します。[`Bool`](/ja/reference/data-types/boolean)

**例**

**数値と NULL を使った基本的な使い方**

```sql title=Query theme={null}
SELECT
    isNotDistinctFrom(1, 1) AS result_1,
    isNotDistinctFrom(1, 2) AS result_2,
    isNotDistinctFrom(NULL, NULL) AS result_3,
    isNotDistinctFrom(NULL, 1) AS result_4
```

```response title=Response theme={null}
┌─result_1─┬─result_2─┬─result_3─┬─result_4─┐
│        1 │        0 │        1 │        0 │
└──────────┴──────────┴──────────┴──────────┘
```

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

導入バージョン: v1.1.0

2 つの値が小なりの関係にあるかを比較します。

**構文**

```sql theme={null}
less(a, b)
    -- a < b
```

**引数**

* `a` — 最初の値。<sup>[\*](#comparison-rules)</sup> - `b` — 2 番目の値。<sup>[\*](#comparison-rules)</sup>

**戻り値**

`a` が `b` より小さい場合は `1`、それ以外の場合は `0` を返します [`UInt8`](/ja/reference/data-types/int-uint)

**例**

**使用例**

```sql title=Query theme={null}
SELECT 1 < 2, 2 < 1;
```

```response title=Response theme={null}
┌─less(1, 2)─┬─less(2, 1)─┐
│          1 │          0 │
└────────────┴────────────┘
```

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

導入バージョン: v1.1.0

2 つの値を比較し、一方がもう一方以下であるかどうかを判定します。

**構文**

```sql theme={null}
lessOrEquals(a, b)
-- a <= b
```

**引数**

* `a` — 最初の値。<sup>[\*](#comparison-rules)</sup> - `b` — 2 つ目の値。<sup>[\*](#comparison-rules)</sup>

**戻り値**

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

**例**

**使用例**

```sql title=Query theme={null}
SELECT 1 <= 2, 2 <= 2, 3 <= 2;
```

```response title=Response theme={null}
┌─lessOrEquals(1, 2)─┬─lessOrEquals(2, 2)─┬─lessOrEquals(3, 2)─┐
│                  1 │                  1 │                  0 │
└────────────────────┴────────────────────┴────────────────────┘
```

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

導入バージョン: v1.1.0

2 つの値が等しくないかどうかを比較します。

**構文**

```sql theme={null}
notEquals(a, b)
    -- a != b
    -- a <> b
```

**引数**

* `a` — 第1の値。<sup>[\*](#comparison-rules)</sup> - `b` — 第2の値。<sup>[\*](#comparison-rules)</sup>

**戻り値**

`a` が `b` と等しくない場合は `1`、それ以外の場合は `0` を返します。[`UInt8`](/ja/reference/data-types/int-uint)

**例**

**使用例**

```sql title=Query theme={null}
SELECT 1 != 2, 1 != 1;
```

```response title=Response theme={null}
┌─notEquals(1, 2)─┬─notEquals(1, 1)─┐
│               1 │               0 │
└─────────────────┴─────────────────┘
```

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

導入バージョン: v1.1.0

左オペランドが右オペランドの集合に含まれていないかどうかを判定します。集合に含まれていない場合は 1 を返し、それ以外の場合は 0 を返します。左オペランド内の NULL 値はスキップされます。

**構文**

```sql theme={null}
notIn(x, set)
```

**引数**

* `x` — 判定する値。 - `set` — 値の集合。

**戻り値**

x が集合に含まれない場合は 1、含まれる場合は 0 を返します。 [`UInt8`](/ja/reference/data-types/int-uint)

**例**

**基本的な使い方**

```sql title=Query theme={null}
SELECT 4 NOT IN (1, 2, 3)
```

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

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

導入バージョン: v1.1.0

左オペランドが右オペランドの集合に含まれていないかどうかを判定します。集合に含まれていなければ 1、それ以外の場合は 0 を返します。左オペランド内の NULL 値は無視されます。
これは、集合を作成せずに型解析を行うための IgnoreSet バリアントです。

**構文**

```sql theme={null}
notIn(x, set)
```

**引数**

* `x` — 確認する値。 - `set` — 値の集合。

**戻り値**

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

**例**

**基本的な使い方**

```sql title=Query theme={null}
SELECT 4 NOT IN (1, 2, 3)
```

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

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

導入バージョン: v1.1.0

左オペランドが右オペランドの集合に含まれていないかどうかを判定します。`notIn` とは異なり、NULL 値はスキップされません。NULL は集合の要素と比較され、NULL = NULL は true と評価されます。

**構文**

```sql theme={null}
notNullIn(x, set)
```

**引数**

* `x` — 確認する値。 - `set` — 値の集合。

**戻り値**

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

**例**

**基本的な使い方**

```sql title=Query theme={null}
SELECT notNullIn(NULL, tuple(1, NULL))
```

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

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

導入バージョン: v1.1.0

左オペランドが右オペランドの集合のメンバーではないかどうかを確認します。`notIn` とは異なり、NULL 値はスキップされません。NULL は集合の要素と比較され、NULL = NULL は true と評価されます。
これは、集合を作成せずに型解析を行うための IgnoreSet バリアントです。

**構文**

```sql theme={null}
notNullIn(x, set)
```

**引数**

* `x` — 確認対象の値。 - `set` — 値の集合。

**戻り値**

`x` が集合に含まれない場合は 1、含まれる場合は 0 を返します。 [`UInt8`](/ja/reference/data-types/int-uint)

**例**

**基本的な使い方**

```sql title=Query theme={null}
SELECT notNullIn(NULL, tuple(1, NULL))
```

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

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

導入バージョン: v1.1.0

左オペランドが右オペランドの Set に含まれるかどうかを判定します。`in` とは異なり、NULL 値はスキップされません。NULL は Set の要素と比較され、NULL = NULL は true と評価されます。

**構文**

```sql theme={null}
nullIn(x, set)
```

**引数**

* `x` — 確認する値。 - `set` — 値の集合。

**戻り値**

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

**例**

**基本的な使い方**

```sql title=Query theme={null}
SELECT nullIn(NULL, tuple(1, NULL))
```

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

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

導入バージョン: v1.1.0

左側のオペランドが右側のオペランドのセットに含まれるかどうかを確認します。`in` とは異なり、NULL 値はスキップされません。NULL はセットの要素と比較され、NULL = NULL は true と評価されます。
これは、セットを作成せずに型解析に使用される IgnoreSet バリアントです。

**構文**

```sql theme={null}
nullIn(x, set)
```

**引数**

* `x` — 確認する値。 - `set` — 値の集合。

**戻り値**

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

**例**

**基本的な使い方**

```sql title=Query theme={null}
SELECT nullIn(NULL, tuple(1, NULL))
```

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