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

比較関数

比較ルール

以下の比較関数は、型 UInt80 または 1 を返します。同じグループ内の値同士のみが 比較可能です(例: UInt16UInt64)。グループをまたいだ比較(例: UInt16DateTime)はできません。 数値と文字列の比較、文字列と日付、日付と時刻の比較は可能です。 タプルおよび配列の場合、比較は辞書式(レキシコグラフィック)になり、左側と右側のタプル/配列の各対応要素を順に比較します。

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

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

文字列はバイト単位で比較されます。一方の文字列に 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 — 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.11

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

構文

isDistinctFrom(x, y)

引数

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

戻り値

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

  • x != y の場合に true を返します。
    • xy の一方だけが NULL の場合に true を返します。
    • x = y の場合、または xy の両方が 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.10

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、それ以外の場合は 0 を返します(UInt8)。

使用例

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

lessOrEquals

導入バージョン: v1.1

2 つの値を比較し、「以下(less-than-or-equal-to)」の関係かどうかを判定します。

構文

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 — 最初の値。* - b — 2 番目の値。*

戻り値

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

使用例

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