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

比較規則

以下の比較関数は、型 UInt80 または 1 を返します。同じグループ内の値どうしのみ 比較できます (例: UInt16UInt64) 。グループをまたぐ比較はできません (例: UInt16DateTime) 。 数値と文字列の比較のほか、文字列と日付、日付と時刻の比較も可能です。 タプルと配列については、辞書式比較が行われます。つまり、左側と右側のタプル/配列の対応する 各要素ごとに比較されます。 次の型は比較できます:
  • 数値と Decimal
  • String と Fixed String
  • 日付
  • 日付と時刻
  • タプル (辞書式比較)
  • 配列 (辞書式比較)
String はバイト単位で比較されます。文字列のいずれか一方に UTF-8 でエンコードされたマルチバイト文字が含まれている場合、予期しない結果になることがあります。 文字列 S1 が別の文字列 S2 をプレフィックスとして持つ場合、S1 は S2 より長いものと見なされます。

equals

導入バージョン: v1.1.0 2つの値が等しいかどうかを判定します。 構文
equals(a, b)
        -- a = b
        -- a == b
引数
  • a — 1 つ目の値。* - b — 2 つ目の値。*
戻り値 ab と等しい場合は 1、それ以外の場合は 0 を返します UInt8 使用例
Query
SELECT 1 = 1, 1 = 2;
Response
┌─equals(1, 1)─┬─equals(1, 2)─┐
│            1 │            0 │
└──────────────┴──────────────┘

globalIn

導入バージョン: v1.1.0 in と同じですが、分散クエリではグローバル Set 分散を使用します。Set はすべてのリモートサーバーに送信されます。 構文
globalIn(x, set)
引数
  • x — チェックする値。 - set — 値の集合。
戻り値 x が集合に含まれていれば 1、そうでなければ 0 を返します。UInt8 基本的な使い方
Query
SELECT 1 IN (1, 2, 3)
Response
1

globalInIgnoreSet

導入バージョン: v1.1.0 in と同様ですが、分散クエリではグローバル Set 分散を使用します。Set はすべてのリモートサーバーに送信されます。 これは、Set を作成せずに型解析を行うための IgnoreSet バリアントです。 構文
globalIn(x, set)
引数
  • x — 確認する値。 - set — 値の集合。
戻り値 x が集合に含まれる場合は 1、それ以外の場合は 0 を返します。UInt8 基本的な使い方
Query
SELECT 1 IN (1, 2, 3)
Response
1

globalNotIn

導入バージョン: v1.1.0 notIn と同様ですが、分散クエリではグローバル Set 分散を使用します。Set はすべてのリモートサーバーに送信されます。 構文
globalNotIn(x, set)
引数
  • x — 確認する値。 - set — 値の集合。
戻り値 x が集合に含まれない場合は 1、そうでない場合は 0 を返します。UInt8 基本的な使い方
Query
SELECT 4 NOT IN (1, 2, 3)
Response
1

globalNotInIgnoreSet

導入バージョン: v1.1.0 notIn と同じですが、分散クエリでは global set distribution を使用します。セットはすべてのリモートサーバーに送信されます。 これは、セットを作成せずに型解析を行うための IgnoreSet バリアントです。 構文
globalNotIn(x, set)
引数
  • x — 確認する値。 - set — 値の集合。
戻り値 x が set に含まれない場合は 1、そうでない場合は 0 を返します。 UInt8 基本的な使い方
Query
SELECT 4 NOT IN (1, 2, 3)
Response
1

globalNotNullIn

導入バージョン: v1.1.0 notNullIn と同じですが、分散クエリではグローバル Set 分散を使用します。Set はすべてのリモートサーバーに送信されます。 構文
globalNotNullIn(x, set)
引数
  • x — 確認する値。 - set — 値のセット。
戻り値 x がセットに含まれていない場合は 1、含まれている場合は 0 を返します。 UInt8 基本的な使い方
Query
SELECT notNullIn(NULL, tuple(1, NULL))
Response
0

globalNotNullInIgnoreSet

導入バージョン: v1.1.0 notNullIn と同じですが、分散クエリではグローバル Set 分散を使用します。セットはすべてのリモートサーバーに送信されます。 これは、セットを作成せずに型解析を行うための IgnoreSet バリアントです。 構文
globalNotNullIn(x, set)
引数
  • x — 確認する値。 - set — 値のセット。
戻り値 x がセットに含まれていない場合は 1、そうでない場合は 0 を返します。UInt8 基本的な使い方
Query
SELECT notNullIn(NULL, tuple(1, NULL))
Response
0

globalNullIn

導入バージョン: v1.1.0 分散クエリでグローバル Set 分散を使用する点を除き、nullIn と同じです。Set はすべてのリモートサーバーに送信されます。 構文
globalNullIn(x, set)
引数
  • x — 確認する値。 - set — 値の集合。
戻り値 xset に含まれている場合は 1、そうでない場合は 0 を返します。UInt8 基本的な使い方
Query
SELECT nullIn(NULL, tuple(1, NULL))
Response
1

globalNullInIgnoreSet

導入バージョン: v1.1.0 nullIn と同じですが、分散クエリではグローバル set distribution を使用します。set はすべてのリモートサーバーに送信されます。 これは、set を作成せずに型解析を行うための IgnoreSet バリアントです。 構文
globalNullIn(x, set)
引数
  • x — 判定する値。 - set — 値の集合。
戻り値 x が集合に含まれている場合は 1、含まれていない場合は 0 を返します。UInt8 基本的な使い方
Query
SELECT nullIn(NULL, tuple(1, NULL))
Response
1

greater

導入バージョン: v1.1.0 2つの値を比較し、一方が他方より大きいかどうかを判定します。 構文
greater(a, b)
    -- a > b
引数
  • a — 最初の値。* - b — 2 番目の値。*
戻り値 ab より大きい場合は 1、それ以外の場合は 0 を返します。 UInt8 使用例
Query
SELECT 2 > 1, 1 > 2;
Response
┌─greater(2, 1)─┬─greater(1, 2)─┐
│             1 │             0 │
└───────────────┴───────────────┘

greaterOrEquals

導入バージョン: v1.1.0 2 つの値が大なりイコールの関係にあるかどうかを比較します。 構文
greaterOrEquals(a, b)
    -- a >= b
引数
  • a — 1番目の値。* - b — 2番目の値。*
戻り値 ab 以上の場合は 1、それ以外の場合は 0 を返します。UInt8 使用例
Query
SELECT 2 >= 1, 2 >= 2, 1 >= 2;
Response
┌─greaterOrEquals(2, 1)─┬─greaterOrEquals(2, 2)─┬─greaterOrEquals(1, 2)─┐
│                     1 │                     1 │                     0 │
└───────────────────────┴───────────────────────┴───────────────────────┘

in

導入バージョン: v1.1.0 左オペランドが右オペランドの集合に含まれているかどうかを確認します。含まれていれば 1、そうでなければ 0 を返します。左オペランド内の NULL 値はスキップされます (集合に含まれないものとして扱われます) 。 構文
in(x, set)
引数
  • x — 確認する値。 - set — 値の集合。
戻り値 x が集合に含まれる場合は 1、そうでない場合は 0 を返します。 UInt8 基本的な使い方
Query
SELECT 1 IN (1, 2, 3)
Response
1

inIgnoreSet

導入バージョン: v1.1.0 左オペランドが右オペランドの集合に含まれるかどうかを判定します。含まれる場合は 1、そうでない場合は 0 を返します。左オペランドの NULL 値 は無視されます (集合に含まれないものとして扱われます) 。 これは、集合を作成せずに型解析に使用される IgnoreSet バリアントです。 構文
in(x, set)
引数
  • x — 判定対象の値。 - set — 値の集合。
戻り値 x が集合に含まれている場合は 1、含まれていない場合は 0 を返します。UInt8 基本的な使い方
Query
SELECT 1 IN (1, 2, 3)
Response
1

isDistinctFrom

導入バージョン: v25.11.0 2 つの値に対して、NULL を安全に扱う「等しくない」比較を行います。 値が異なる (等しくない) 場合は true を返します。これには、一方が NULL でもう一方が NULL ではない場合も含まれます。 値が等しい場合、または両方が NULL の場合は false を返します。 構文
isDistinctFrom(x, y)
引数
  • x — 比較する最初の値。任意の ClickHouse データ型を指定できます。Any
  • y — 比較する2番目の値。任意の ClickHouse データ型を指定できます。Any
戻り値 2 つの値が異なる場合は true を返します。NULL も比較対象として扱います。
  • x != y の場合は true を返します。
    • x または y のどちらか一方だけが NULL の場合は true を返します。
    • x = y の場合、または x と y の両方が NULL の場合は false を返します。Bool
数値と NULL を使った基本的な使い方
Query
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
┌─result_1─┬─result_2─┬─result_3─┬─result_4─┐
│        1 │        0 │        1 │        0 │
└──────────┴──────────┴──────────┴──────────┘

isNotDistinctFrom

導入バージョン: v23.8.0 2 つの値に対して、NULL を安全に扱う equals 比較を行います。 値が等しい場合は true を返します。両方が NULL の場合も含まれます。 値が異なる場合、または一方だけが NULL の場合は false を返します。 構文
isNotDistinctFrom(x, y)
引数
  • x — 比較する最初の値。任意の ClickHouse のデータ型を指定できます。Any
  • y — 比較する2番目の値。任意の ClickHouse のデータ型を指定できます。Any
戻り値 2つの値が等しい場合は true を返します。NULL は比較可能な値として扱われます。
  • x = y の場合は true を返します。
    • x と y の両方が NULL の場合は true を返します。
    • x != y の場合、または x と y のどちらか一方だけが NULL の場合は false を返します。Bool
数値と NULL を使った基本的な使い方
Query
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
┌─result_1─┬─result_2─┬─result_3─┬─result_4─┐
│        1 │        0 │        1 │        0 │
└──────────┴──────────┴──────────┴──────────┘

less

導入バージョン: v1.1.0 2 つの値が小なりの関係にあるかを比較します。 構文
less(a, b)
    -- a < b
引数
  • a — 最初の値。* - b — 2 番目の値。*
戻り値 ab より小さい場合は 1、それ以外の場合は 0 を返します UInt8 使用例
Query
SELECT 1 < 2, 2 < 1;
Response
┌─less(1, 2)─┬─less(2, 1)─┐
│          1 │          0 │
└────────────┴────────────┘

lessOrEquals

導入バージョン: v1.1.0 2 つの値を比較し、一方がもう一方以下であるかどうかを判定します。 構文
lessOrEquals(a, b)
-- a <= b
引数
  • a — 最初の値。* - b — 2 つ目の値。*
戻り値 ab 以下の場合は 1 を返し、それ以外の場合は 0 を返します。 UInt8 使用例
Query
SELECT 1 <= 2, 2 <= 2, 3 <= 2;
Response
┌─lessOrEquals(1, 2)─┬─lessOrEquals(2, 2)─┬─lessOrEquals(3, 2)─┐
│                  1 │                  1 │                  0 │
└────────────────────┴────────────────────┴────────────────────┘

notEquals

導入バージョン: v1.1.0 2 つの値が等しくないかどうかを比較します。 構文
notEquals(a, b)
    -- a != b
    -- a <> b
引数
  • a — 第1の値。* - b — 第2の値。*
戻り値 ab と等しくない場合は 1、それ以外の場合は 0 を返します。UInt8 使用例
Query
SELECT 1 != 2, 1 != 1;
Response
┌─notEquals(1, 2)─┬─notEquals(1, 1)─┐
│               1 │               0 │
└─────────────────┴─────────────────┘

notIn

導入バージョン: v1.1.0 左オペランドが右オペランドの集合に含まれていないかどうかを判定します。集合に含まれていない場合は 1 を返し、それ以外の場合は 0 を返します。左オペランド内の NULL 値はスキップされます。 構文
notIn(x, set)
引数
  • x — 判定する値。 - set — 値の集合。
戻り値 x が集合に含まれない場合は 1、含まれる場合は 0 を返します。 UInt8 基本的な使い方
Query
SELECT 4 NOT IN (1, 2, 3)
Response
1

notInIgnoreSet

導入バージョン: v1.1.0 左オペランドが右オペランドの集合に含まれていないかどうかを判定します。集合に含まれていなければ 1、それ以外の場合は 0 を返します。左オペランド内の NULL 値は無視されます。 これは、集合を作成せずに型解析を行うための IgnoreSet バリアントです。 構文
notIn(x, set)
引数
  • x — 確認する値。 - set — 値の集合。
戻り値 x が集合に含まれない場合は 1、それ以外の場合は 0 を返します。UInt8 基本的な使い方
Query
SELECT 4 NOT IN (1, 2, 3)
Response
1

notNullIn

導入バージョン: v1.1.0 左オペランドが右オペランドの集合に含まれていないかどうかを判定します。notIn とは異なり、NULL 値はスキップされません。NULL は集合の要素と比較され、NULL = NULL は true と評価されます。 構文
notNullIn(x, set)
引数
  • x — 確認する値。 - set — 値の集合。
戻り値 x が集合に含まれない場合は 1、そうでない場合は 0 を返します。UInt8 基本的な使い方
Query
SELECT notNullIn(NULL, tuple(1, NULL))
Response
0

notNullInIgnoreSet

導入バージョン: v1.1.0 左オペランドが右オペランドの集合のメンバーではないかどうかを確認します。notIn とは異なり、NULL 値はスキップされません。NULL は集合の要素と比較され、NULL = NULL は true と評価されます。 これは、集合を作成せずに型解析を行うための IgnoreSet バリアントです。 構文
notNullIn(x, set)
引数
  • x — 確認対象の値。 - set — 値の集合。
戻り値 x が集合に含まれない場合は 1、含まれる場合は 0 を返します。 UInt8 基本的な使い方
Query
SELECT notNullIn(NULL, tuple(1, NULL))
Response
0

nullIn

導入バージョン: v1.1.0 左オペランドが右オペランドの Set に含まれるかどうかを判定します。in とは異なり、NULL 値はスキップされません。NULL は Set の要素と比較され、NULL = NULL は true と評価されます。 構文
nullIn(x, set)
引数
  • x — 確認する値。 - set — 値の集合。
戻り値 x が set に含まれている場合は 1、そうでない場合は 0 を返します。 UInt8 基本的な使い方
Query
SELECT nullIn(NULL, tuple(1, NULL))
Response
1

nullInIgnoreSet

導入バージョン: v1.1.0 左側のオペランドが右側のオペランドのセットに含まれるかどうかを確認します。in とは異なり、NULL 値はスキップされません。NULL はセットの要素と比較され、NULL = NULL は true と評価されます。 これは、セットを作成せずに型解析に使用される IgnoreSet バリアントです。 構文
nullIn(x, set)
引数
  • x — 確認する値。 - set — 値の集合。
戻り値 xset に含まれている場合は 1、そうでない場合は 0 を返します。UInt8 基本的な使い方
Query
SELECT nullIn(NULL, tuple(1, NULL))
Response
1
最終更新日 2026年6月10日