比較規則
以下の比較関数は、型 UInt8 の 0 または 1 を返します。同じグループ内の値どうしのみ
比較できます (例: UInt16 と UInt64) 。グループをまたぐ比較はできません (例: UInt16 と DateTime) 。
数値と文字列の比較のほか、文字列と日付、日付と時刻の比較も可能です。
タプルと配列については、辞書式比較が行われます。つまり、左側と右側のタプル/配列の対応する
各要素ごとに比較されます。
次の型は比較できます:
- 数値と Decimal
- String と Fixed String
- 日付
- 日付と時刻
- タプル (辞書式比較)
- 配列 (辞書式比較)
equals
導入バージョン: v1.1.0
2つの値が等しいかどうかを判定します。
構文
equals(a, b)
-- a = b
-- a == b引数
戻り値
a が b と等しい場合は 1、それ以外の場合は 0 を返します UInt8
例
使用例
SELECT 1 = 1, 1 = 2;┌─equals(1, 1)─┬─equals(1, 2)─┐
│ 1 │ 0 │
└──────────────┴──────────────┘globalIn
導入バージョン: v1.1.0
in と同じですが、分散クエリではグローバル Set 分散を使用します。Set はすべてのリモートサーバーに送信されます。
構文
globalIn(x, set)引数
x— チェックする値。 -set— 値の集合。
戻り値
x が集合に含まれていれば 1、そうでなければ 0 を返します。UInt8
例
基本的な使い方
SELECT 1 IN (1, 2, 3)1globalInIgnoreSet
導入バージョン: v1.1.0
in と同様ですが、分散クエリではグローバル Set 分散を使用します。Set はすべてのリモートサーバーに送信されます。
これは、Set を作成せずに型解析を行うための IgnoreSet バリアントです。
構文
globalIn(x, set)引数
x— 確認する値。 -set— 値の集合。
戻り値
x が集合に含まれる場合は 1、それ以外の場合は 0 を返します。UInt8
例
基本的な使い方
SELECT 1 IN (1, 2, 3)1globalNotIn
導入バージョン: v1.1.0
notIn と同様ですが、分散クエリではグローバル Set 分散を使用します。Set はすべてのリモートサーバーに送信されます。
構文
globalNotIn(x, set)引数
x— 確認する値。 -set— 値の集合。
戻り値
x が集合に含まれない場合は 1、そうでない場合は 0 を返します。UInt8
例
基本的な使い方
SELECT 4 NOT IN (1, 2, 3)1globalNotInIgnoreSet
導入バージョン: v1.1.0
notIn と同じですが、分散クエリでは global set distribution を使用します。セットはすべてのリモートサーバーに送信されます。
これは、セットを作成せずに型解析を行うための IgnoreSet バリアントです。
構文
globalNotIn(x, set)引数
x— 確認する値。 -set— 値の集合。
戻り値
x が set に含まれない場合は 1、そうでない場合は 0 を返します。 UInt8
例
基本的な使い方
SELECT 4 NOT IN (1, 2, 3)1globalNotNullIn
導入バージョン: v1.1.0
notNullIn と同じですが、分散クエリではグローバル Set 分散を使用します。Set はすべてのリモートサーバーに送信されます。
構文
globalNotNullIn(x, set)引数
x— 確認する値。 -set— 値の集合。
戻り値
x がセットに含まれていない場合は 1、含まれている場合は 0 を返します。 UInt8
例
基本的な使い方
SELECT notNullIn(NULL, tuple(1, NULL))1globalNotNullInIgnoreSet
導入バージョン: v1.1.0
notNullIn と同じですが、分散クエリではグローバル Set 分散を使用します。セットはすべてのリモートサーバーに送信されます。
これは、セットを作成せずに型解析を行うための IgnoreSet バリアントです。
構文
globalNotNullIn(x, set)引数
x— 確認する値。 -set— 値の集合。
戻り値
x がセットに含まれていない場合は 1、そうでない場合は 0 を返します。UInt8
例
基本的な使い方
SELECT notNullIn(NULL, tuple(1, NULL))1globalNullIn
導入バージョン: v1.1.0
分散クエリでグローバル Set 分散を使用する点を除き、nullIn と同じです。Set はすべてのリモートサーバーに送信されます。
構文
globalNullIn(x, set)引数
x— 確認する値。 -set— 値の集合。
戻り値
x が set に含まれている場合は 1、そうでない場合は 0 を返します。UInt8
例
基本的な使い方
SELECT nullIn(NULL, tuple(1, NULL))0globalNullInIgnoreSet
導入バージョン: v1.1.0
nullIn と同じですが、分散クエリではグローバル Set 分散を使用します。set はすべてのリモートサーバーに送信されます。
これは、set を作成せずに型解析を行うための IgnoreSet バリアントです。
構文
globalNullIn(x, set)引数
x— 判定する値。 -set— 値の集合。
戻り値
x が集合に含まれている場合は 1、含まれていない場合は 0 を返します。UInt8
例
基本的な使い方
SELECT nullIn(NULL, tuple(1, NULL))0greater
導入バージョン: v1.1.0
2つの値を比較し、一方が他方より大きいかどうかを判定します。
構文
greater(a, b)
-- a > b引数
戻り値
a が b より大きい場合は 1、それ以外の場合は 0 を返します。 UInt8
例
使用例
SELECT 2 > 1, 1 > 2;┌─greater(2, 1)─┬─greater(1, 2)─┐
│ 1 │ 0 │
└───────────────┴───────────────┘greaterOrEquals
導入バージョン: v1.1.0
2 つの値が大なりイコールの関係にあるかどうかを比較します。
構文
greaterOrEquals(a, b)
-- a >= b引数
戻り値
a が b 以上の場合は 1、それ以外の場合は 0 を返します。UInt8
例
使用例
SELECT 2 >= 1, 2 >= 2, 1 >= 2;┌─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
例
基本的な使い方
SELECT 1 IN (1, 2, 3)1inIgnoreSet
導入バージョン: v1.1.0
左オペランドが右オペランドの集合に含まれるかどうかを判定します。含まれる場合は 1、そうでない場合は 0 を返します。左オペランドの NULL 値 は無視されます (集合に含まれないものとして扱われます) 。 これは、集合を作成せずに型解析に使用される IgnoreSet バリアントです。
構文
in(x, set)引数
x— 判定対象の値。 -set— 値の集合。
戻り値
x が集合に含まれている場合は 1、含まれていない場合は 0 を返します。UInt8
例
基本的な使い方
SELECT 1 IN (1, 2, 3)1isDistinctFrom
導入バージョン: v25.11.0
2 つの値に対して、NULL を安全に扱う「等しくない」比較を行います。
値が異なる (等しくない) 場合は true を返します。これには、一方が NULL でもう一方が NULL ではない場合も含まれます。
値が等しい場合、または両方が NULL の場合は false を返します。
構文
isDistinctFrom(x, y)引数
戻り値
2 つの値が異なる場合は true を返します。NULL も比較対象として扱います。
- x != y の場合は
trueを返します。- x または y のどちらか一方だけが NULL の場合は
trueを返します。 - x = y の場合、または x と y の両方が NULL の場合は
falseを返します。Bool
- x または y のどちらか一方だけが NULL の場合は
例
数値と 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
導入バージョン: v23.8.0
2 つの値に対して、NULL を安全に扱う equals 比較を行います。
値が等しい場合は true を返します。両方が NULL の場合も含まれます。
値が異なる場合、または一方だけが NULL の場合は false を返します。
構文
isNotDistinctFrom(x, y)引数
戻り値
2つの値が等しい場合は true を返します。NULL は比較可能な値として扱われます。
- x = y の場合は
trueを返します。- x と y の両方が NULL の場合は
trueを返します。 - x != y の場合、または x と y のどちらか一方だけが NULL の場合は
falseを返します。Bool
- x と y の両方が NULL の場合は
例
数値と 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.0
2 つの値が小なりの関係にあるかを比較します。
構文
less(a, b)
-- a < b引数
戻り値
a が b より小さい場合は 1、それ以外の場合は 0 を返します UInt8
例
使用例
SELECT 1 < 2, 2 < 1;┌─less(1, 2)─┬─less(2, 1)─┐
│ 1 │ 0 │
└────────────┴────────────┘lessOrEquals
導入バージョン: v1.1.0
2 つの値を比較し、一方がもう一方以下であるかどうかを判定します。
構文
lessOrEquals(a, b)
-- a <= b引数
戻り値
a が b 以下の場合は 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.0
2 つの値が等しくないかどうかを比較します。
構文
notEquals(a, b)
-- a != b
-- a <> b引数
戻り値
a が b と等しくない場合は 1、それ以外の場合は 0 を返します。UInt8
例
使用例
SELECT 1 != 2, 1 != 1;┌─notEquals(1, 2)─┬─notEquals(1, 1)─┐
│ 1 │ 0 │
└─────────────────┴─────────────────┘notIn
導入バージョン: v1.1.0
左オペランドが右オペランドの集合に含まれていないかどうかを判定します。集合に含まれていない場合は 1 を返し、それ以外の場合は 0 を返します。左オペランド内の NULL 値はスキップされます。
構文
notIn(x, set)引数
x— 判定する値。 -set— 値の集合。
戻り値
x が集合に含まれない場合は 1、含まれる場合は 0 を返します。 UInt8
例
基本的な使い方
SELECT 4 NOT IN (1, 2, 3)1notInIgnoreSet
導入バージョン: v1.1.0
左オペランドが右オペランドの集合に含まれていないかどうかを判定します。集合に含まれていなければ 1、それ以外の場合は 0 を返します。左オペランド内の NULL 値は無視されます。 これは、集合を作成せずに型解析を行うための IgnoreSet バリアントです。
構文
notIn(x, set)引数
x— 確認する値。 -set— 値の集合。
戻り値
x が集合に含まれない場合は 1、それ以外の場合は 0 を返します。UInt8
例
基本的な使い方
SELECT 4 NOT IN (1, 2, 3)1notNullIn
導入バージョン: v1.1.0
左オペランドが右オペランドの集合に含まれていないかどうかを判定します。notIn とは異なり、NULL 値はスキップされません。NULL は集合の要素と比較され、NULL = NULL は true と評価されます。
構文
notNullIn(x, set)引数
x— 確認する値。 -set— 値の集合。
戻り値
x が集合に含まれない場合は 1、そうでない場合は 0 を返します。UInt8
例
基本的な使い方
SELECT notNullIn(NULL, tuple(1, NULL))1notNullInIgnoreSet
導入バージョン: v1.1.0
左オペランドが右オペランドの集合のメンバーではないかどうかを確認します。notIn とは異なり、NULL 値はスキップされません。NULL は集合の要素と比較され、NULL = NULL は true と評価されます。
これは、集合を作成せずに型解析を行うための IgnoreSet バリアントです。
構文
notNullIn(x, set)引数
x— 確認対象の値。 -set— 値の集合。
戻り値
x が集合に含まれない場合は 1、含まれる場合は 0 を返します。 UInt8
例
基本的な使い方
SELECT notNullIn(NULL, tuple(1, NULL))1nullIn
導入バージョン: v1.1.0
左オペランドが右オペランドの Set に含まれるかどうかを判定します。in とは異なり、NULL 値はスキップされません。NULL は Set の要素と比較され、NULL = NULL は true と評価されます。
構文
nullIn(x, set)引数
x— 確認する値。 -set— 値の集合。
戻り値
x が set に含まれている場合は 1、そうでない場合は 0 を返します。 UInt8
例
基本的な使い方
SELECT nullIn(NULL, tuple(1, NULL))0nullInIgnoreSet
導入バージョン: v1.1.0
左オペランドが右オペランドのセットに含まれるかどうかを確認します。in とは異なり、NULL 値はスキップされません。NULL はセットの要素と比較され、NULL = NULL は true と評価されます。
これは、セットを作成せずに型解析に使用される IgnoreSet バリアントです。
構文
nullIn(x, set)引数
x— 確認する値。 -set— 値の集合。
戻り値
x が set に含まれている場合は 1、そうでない場合は 0 を返します。UInt8
例
基本的な使い方
SELECT nullIn(NULL, tuple(1, NULL))0