メインコンテンツへスキップ
ClickHouse では、クエリのパース時に、演算子の優先度・順位・結合性に応じて、演算子が対応する関数に変換されます。

アクセス演算子

a[N] – 配列の要素にアクセスします。arrayElement(a, N) 関数。 a.N – タプルの要素にアクセスします。tupleElement(a, N) 関数。

数値の否定演算子

-anegate (a) 関数です。 タプルの否定については、tupleNegate を参照してください。

乗算および除算の演算子

a * bmultiply(a, b) 関数です。 タプル を数値で乗算する場合は tupleMultiplyByNumber、スカラー積については dotProduct を参照してください。 a / bdivide(a, b) 関数です。 タプル を数値で除算する場合は tupleDivideByNumber を参照してください。 a % bmodulo(a, b) 関数です。

加算演算子と減算演算子

a + bplus(a, b) 関数。 タプルの加算については、tuplePlus を参照してください。 a - bminus(a, b) 関数。 タプルの減算については、tupleMinus を参照してください。

比較演算子

equals 関数

a = bequals(a, b) 関数です。 a == bequals(a, b) 関数です。

notEquals 関数

a != bnotEquals(a, b) 関数。 a <> bnotEquals(a, b) 関数。

lessOrEquals 関数

a <= blessOrEquals(a, b) 関数。

greaterOrEquals 関数

a >= bgreaterOrEquals(a, b) 関数。

less 関数

a < bless(a, b) 関数。

greater 関数

a > bgreater(a, b) 関数です。

like 関数

a LIKE blike(a, b) 関数を表します。

notLike 関数

a NOT LIKE bnotLike(a, b) 関数。

ilike 関数

a ILIKE bilike(a, b) 関数と同等です。

BETWEEN 関数

a BETWEEN b AND ca >= b AND a <= c と同じ意味です。 a NOT BETWEEN b AND ca < b OR a > c と同じ意味です。

is not distinct from 演算子 (<=>)

25.10 以降では、<=> を他の演算子と同様に使用できます。 25.10 より前は、JOIN 式でしか使用できませんでした。たとえば次のとおりです。
<=> 演算子は、IS NOT DISTINCT FROM と等価な NULL セーフの等価演算子です。 通常の等価演算子 (=) と同様に動作しますが、NULL 値も比較できるものとして扱います。 NULL 値同士は等しいものと見なされ、NULLNULL 以外の任意の値と比較した場合は、NULL ではなく 0 (false) を返します。

Stringを扱う演算子

OVERLAY

  • OVERLAY(string PLACING replacement FROM offset) - overlay(string, replacement, offset) 関数。
  • OVERLAY(string PLACING replacement FROM offset FOR length) - overlay(string, replacement, offset, length) 関数。
  • OVERLAYUTF8(string PLACING replacement FROM offset) - overlayUTF8(string, replacement, offset) 関数。
  • OVERLAYUTF8(string PLACING replacement FROM offset FOR length) - overlayUTF8(string, replacement, offset, length) 関数。

データセットを扱う演算子

IN 演算子および EXISTS 演算子を参照してください。

in 関数

a IN ... - in(a, b) 関数。

notIn 関数

a NOT IN ... に対応する notIn(a, b) 関数。

globalIn 関数

a GLOBAL IN ...globalIn(a, b) 関数です。

globalNotIn 関数

a GLOBAL NOT IN ...globalNotIn(a, b) 関数。

in サブクエリ function

a = ANY (subquery)in(a, subquery) 関数を表します。

notIn サブクエリ関数

a != ANY (subquery)a NOT IN (SELECT singleValueOrNull(*) FROM subquery) と同じです。

in サブクエリ function

a = ALL (subquery)a IN (SELECT singleValueOrNull(*) FROM subquery) と同じです。

notIn サブクエリ function

a != ALL (subquery)notIn(a, subquery) 関数です。 ALL を使用したクエリ:
Query
Response
ANY を使うクエリ:
Query
Response

日付と時刻を扱う演算子

EXTRACT

指定した日付から各要素を抽出します。たとえば、指定した日付から月を取得したり、時刻から秒を取得したりできます。 part パラメータは、日付のどの要素を取得するかを指定します。使用できる値は次のとおりです。
  • SECOND — 秒。設定可能な値: 0–59。
  • MINUTE — 分。設定可能な値: 0–59。
  • HOUR — 時。設定可能な値: 0–23。
  • DAY — 日。設定可能な値: 1–31。
  • WEEK — ISO 8601 の週番号。設定可能な値: 1–53。
  • MONTH — 月の番号。設定可能な値: 1–12。
  • QUARTER — 四半期。設定可能な値: 1–4。
  • YEAR — 年。
  • EPOCH — Unix timestamp (1970-01-01 00:00:00 UTC からの秒数) 。注: DateTime64 では、小数秒部分は切り捨てられます。
  • DOW — 曜日 (PostgreSQL互換) 。0 = 日曜日、6 = 土曜日。
  • DOY — 年内通算日。設定可能な値: 1–366。
  • ISODOW — ISO の曜日。1 = 月曜日、7 = 日曜日。
  • ISOYEAR — ISO 8601 の週番号に対応する年。
  • CENTURY — 世紀。たとえば、2024年は21世紀です。
  • DECADE — 十年単位 (年を 10 で割ったもの) 。たとえば、2024年の十年単位の値は 202 です。
  • MILLENNIUM — 千年紀。たとえば、2024年は第3千年紀です。
part パラメータでは大文字と小文字は区別されません。 date パラメータは、処理する日付または時刻を指定します。DateDate32DateTime、および DateTime64 型がサポートされています。 例:
次の例では、テーブルを作成し、そのテーブルに DateTime 型の値を挿入します。
さらに多くの例はテストで確認できます。

INTERVAL

Date 型および DateTime 型の値に対する算術演算で使用する、Interval 型の値を作成します。 インターバルの種類:
  • SECOND
  • MINUTE
  • HOUR
  • DAY
  • WEEK
  • MONTH
  • QUARTER
  • YEAR
INTERVAL 値の設定時には、文字列リテラルを使用することもできます。たとえば、INTERVAL 1 HOURINTERVAL '1 hour' または INTERVAL '1' hour と同じです。
種類の異なるインターバルは組み合わせられません。INTERVAL 4 DAY 1 HOUR のような式は使用できません。たとえば INTERVAL 25 HOUR のように、インターバルはその最小単位以下の単位で指定してください。以下の例のように、連続した演算を使用できます。
例:
INTERVAL 構文または addDays 関数を常に使用することを推奨します。単純な加算や減算 (now() + ... のような構文) では、時刻に関する設定が考慮されません。たとえば、夏時間です。
例:
関連項目

日付と時刻の加算

Date または Date32 の値には、+ 演算子を使用して Time または Time64 の値を加算できます。結果は、指定した時刻の日付を表す DateTime または DateTime64 になります。この演算は可換です。 結果の型は、オペランドの型によって決まります。
結果には session timezone が使用されます (session timezone が設定されていない場合は、server のデフォルトタイムゾーンが使用されます) 。結果が表現可能な範囲を超えた場合の動作は、date_time_overflow_behavior 設定で制御されます。
例:

論理 AND 演算子

構文 SELECT a AND b — 関数 and を用いて ab の論理積を計算します。

論理 OR 演算子

構文 SELECT a OR b — 関数 or を使用して、ab の論理和を計算します。

論理否定演算子

構文 SELECT NOT a — 関数 not を使って、a の論理否定を計算します。

条件演算子

a ? b : cif(a, b, c) 関数。 注: 条件演算子は、まず b と c の値を計算し、次に条件 a が満たされているかどうかを判定して、対応する値を返します。b または CarrayJoin() 関数である場合、“a” の条件にかかわらず各行が複製されます。

条件式

x が指定されている場合は、transform(x, [a, ...], [b, ...], c) 関数が使用されます。指定されていない場合は、multiIf(a, b, ..., c) が使用されます。 式に ELSE c 句がない場合、デフォルト値は NULL です。 transform 関数は NULL では動作しません。

連結演算子

s1 || s2concat(s1, s2) 関数。

ラムダ作成演算子

x -> exprlambda(x, expr) 関数。 以下の演算子は括弧であるため、優先順位を持ちません:

Array作成演算子

[x1, ...]array(x1, ...) 関数。

Tuple 生成演算子

(x1, x2, ...)tuple(x2, x2, ...) 関数。

結合性

すべての二項演算子は左結合です。たとえば、1 + 2 + 3plus(plus(1, 2), 3) に変換されます。 ただし、常に期待どおりの動作になるとは限りません。たとえば、SELECT 4 > 2 > 3 の結果は 0 になります。 効率化のため、and 関数と or 関数は任意個の引数を受け取れます。対応する AND および OR 演算子の連鎖は、これらの関数への単一の呼び出しに変換されます。

NULL かどうかの確認

ClickHouse は IS NULL および IS NOT NULL 演算子をサポートしています。

IS NULL

  • Nullable 型の値に対して、IS NULL 演算子は次の値を返します。
    • 値が NULL の場合は 1
    • それ以外の場合は 0
  • その他の値に対しては、IS NULL 演算子は常に 0 を返します。
optimize_functions_to_subcolumns 設定を有効にすることで最適化できます。optimize_functions_to_subcolumns = 1 の場合、この関数はカラム全体のカラムデータを読み取って処理する代わりに、null サブカラムだけを読み取ります。クエリ SELECT n IS NULL FROM tableSELECT n.null FROM TABLE に変換されます。

IS NOT NULL

  • Nullable 型の値に対しては、IS NOT NULL 演算子は次の値を返します。
    • 値が NULL の場合は 0
    • それ以外の場合は 1
  • その他の値に対しては、IS NOT NULL 演算子は常に 1 を返します。
optimize_functions_to_subcolumns 設定を有効にすると、最適化できます。optimize_functions_to_subcolumns = 1 の場合、関数はカラムデータ全体を読み取って処理する代わりに、null サブカラムだけを読み取ります。クエリ SELECT n IS NOT NULL FROM tableSELECT NOT n.null FROM TABLE に変換されます。
最終更新日 2026年6月19日