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

比較関数

比較ルール

以下の比較関数は、UInt8 型で 0 または 1 を返します。同じグループ内の値のみが 比較可能です(例: UInt16UInt64)であり、グループをまたいだ比較(例: UInt16DateTime)はできません。 数値と文字列の比較に加えて、文字列と日付、日付と時刻の比較も可能です。 タプルおよび配列については辞書式順序で比較されます。つまり、左側と右側のタプル/配列の それぞれ対応する要素ごとに比較が行われます。

比較可能な型は次のとおりです:

  • 数値と 10 進数
  • 文字列と固定長文字列
  • 日付
  • 日付と時刻
  • タプル(辞書式比較)
  • 配列(辞書式比較)
注記

文字列はバイト単位で比較されます。そのため、一方の文字列に UTF-8 でエンコードされたマルチバイト文字が含まれている場合、意図しない結果になる可能性があります。 文字列 S1 が別の文字列 S2 を前方一致(プレフィックス)として含む場合、S1 は S2 より長いと見なされます。

equals

導入バージョン: v1.1

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

構文

equals(a, b)
        -- a = b
        -- a == b

引数

  • a — 1つ目の値。* - b — 2つ目の値。*

返される値

ab と等しい場合は 1 を、それ以外の場合は 0 を返します(UInt8 型)。

使用例

SELECT 1 = 1, 1 = 2;
┌─equals(1, 1)─┬─equals(1, 2)─┐
│            1 │            0 │
└──────────────┴──────────────┘

greater

導入バージョン: v1.1

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

構文

greater(a, b)
    -- a > b

引数

  • a — 1番目の値。* - b — 2番目の値。*

戻り値

ab より大きい場合は 1、それ以外の場合は 0 を返します(UInt8 型)。

使用例

SELECT 2 > 1, 1 > 2;
┌─greater(2, 1)─┬─greater(1, 2)─┐
│             1 │             0 │
└───────────────┴───────────────┘

greaterOrEquals

バージョン v1.1 で導入

2 つの値を比較し、「以上」の関係にあるかどうかを判定します。

構文

greaterOrEquals(a, b)
    -- a >= b(a が b 以上)

引数

  • a — 1 番目の値。* - b — 2 番目の値。*

返される値

ab 以上の場合は 1、それ以外の場合は 0 を返します。UInt8

使用例

SELECT 2 >= 1, 2 >= 2, 1 >= 2;
┌─greaterOrEquals(2, 1)─┬─greaterOrEquals(2, 2)─┬─greaterOrEquals(1, 2)─┐
│                     1 │                     1 │                     0 │
└───────────────────────┴───────────────────────┴───────────────────────┘

isDistinctFrom

導入バージョン: v25.9

2 つの値の間で、NULL セーフな「等しくない」比較を行います。 一方の値が NULL で他方が NULL ではない場合を含め、値が異なる(等しくない)場合に true を返します。 値が等しい場合、または両方が NULL の場合は false を返します。

構文

isDistinctFrom(x, y)

引数

  • x — 比較する1番目の値。任意の ClickHouse データ型を指定できます。Any
  • y — 比較する2番目の値。任意の ClickHouse データ型を指定できます。Any

戻り値

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

  • x != y の場合に true を返します。
  • x または y の一方のみが NULL の場合に true を返します。
  • x = y の場合、または x と y の両方が NULL の場合に false を返します。Bool

数値と 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
┌─result_1─┬─result_2─┬─result_3─┬─result_4─┐
│        1 │        0 │        1 │        0 │
└──────────┴──────────┴──────────┴──────────┘

isNotDistinctFrom

導入バージョン: v25.9

2 つの値に対して、NULL セーフな「等価」比較を実行します。 両方が NULL の場合を含め、値が等しいときは true を返します。 値が異なる場合、または片方のみが NULL の場合は false を返します。

構文

isNotDistinctFrom(x, y)

引数

  • x — 比較する1つ目の値。任意の ClickHouse データ型を指定できます。Any
  • y — 比較する2つ目の値。任意の ClickHouse データ型を指定できます。Any

戻り値

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

  • x = y の場合、true を返します。
  • x と y が両方とも NULL の場合、true を返します。
  • x != y の場合、または x と y のどちらか一方のみが NULL の場合、false を返します。Bool

数値と 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
┌─result_1─┬─result_2─┬─result_3─┬─result_4─┐
│        1 │        0 │        1 │        0 │
└──────────┴──────────┴──────────┴──────────┘

less

導入バージョン: v1.1

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

構文

less(a, b)
    -- a < b

引数

  • a — 1 番目の値。* - b — 2 番目の値。*

戻り値

ab より小さい場合は 1、それ以外の場合は 0UInt8 型)を返します。

使用例

SELECT 1 < 2, 2 < 1;
┌─less(1, 2)─┬─less(2, 1)─┐
│          1 │          0 │
└────────────┴────────────┘

lessOrEquals

v1.1 で導入。

2つの値が「以下」の関係にあるかどうかを比較します。

構文

lessOrEquals(a, b)
-- a <= b

引数

  • a — 1つ目の値。* - b — 2つ目の値。*

返される値

ab 以下の場合は 1 を返し、それ以外の場合は 0 を返します。戻り値の型は UInt8 です。

使用例

SELECT 1 <= 2, 2 <= 2, 3 <= 2;
┌─lessOrEquals(1, 2)─┬─lessOrEquals(2, 2)─┬─lessOrEquals(3, 2)─┐
│                  1 │                  1 │                  0 │
└────────────────────┴────────────────────┴────────────────────┘

notEquals

導入バージョン: v1.1

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

構文

notEquals(a, b)
    -- a != b
    -- a <> b

引数

  • a — 1つ目の値。* - b — 2つ目の値。*

返り値

ab と等しくない場合は 1、それ以外の場合は 0 を返します(UInt8)。

使用例

SELECT 1 != 2, 1 != 1;
┌─notEquals(1, 2)─┬─notEquals(1, 1)─┐
│               1 │               0 │
└─────────────────┴─────────────────┘