8.8 KiB
machine_translated, machine_translated_rev, toc_priority, toc_title
| machine_translated | machine_translated_rev | toc_priority | toc_title |
|---|---|---|---|
| true | 72537a2d527c63c07aa5d2361a8829f3895cf2bd | 37 | 演算子 |
演算子
ClickHouseは、優先順位、優先順位、および連想に従って、クエリ解析段階で演算子を対応する関数に変換します。
アクセス演算子
a[N] – Access to an element of an array. The arrayElement(a, N) 機能。
a.N – Access to a tuple element. The tupleElement(a, N) 機能。
数値否定演算子
-a – The negate (a) 機能。
乗算演算子と除算演算子
a * b – The multiply (a, b) 機能。
a / b – The divide(a, b) 機能。
a % b – The modulo(a, b) 機能。
加算演算子と減算演算子
a + b – The plus(a, b) 機能。
a - b – The minus(a, b) 機能。
比較演算子
a = b – The equals(a, b) 機能。
a == b – The equals(a, b) 機能。
a != b – The notEquals(a, b) 機能。
a <> b – The notEquals(a, b) 機能。
a <= b – The lessOrEquals(a, b) 機能。
a >= b – The greaterOrEquals(a, b) 機能。
a < b – The less(a, b) 機能。
a > b – The greater(a, b) 機能。
a LIKE s – The like(a, b) 機能。
a NOT LIKE s – The notLike(a, b) 機能。
a BETWEEN b AND c – The same as a >= b AND a <= c.
a NOT BETWEEN b AND c – The same as a < b OR a > c.
データセットを操作する演算子
見る 演算子で.
a IN ... – The in(a, b) 機能。
a NOT IN ... – The notIn(a, b) 機能。
a GLOBAL IN ... – The globalIn(a, b) 機能。
a GLOBAL NOT IN ... – The globalNotIn(a, b) 機能。
日付と時刻を操作する演算子
EXTRACT
EXTRACT(part FROM date);
特定の日付から部品を抽出します。 たとえば、特定の日付から月、または時間から秒を取得できます。
その part パラメータ取得する日付のどの部分を指定します。 使用可能な値は次のとおりです:
DAY— The day of the month. Possible values: 1–31.MONTH— The number of a month. Possible values: 1–12.YEAR— The year.SECOND— The second. Possible values: 0–59.MINUTE— The minute. Possible values: 0–59.HOUR— The hour. Possible values: 0–23.
その part パラメータは大文字と小文字を区別する.
その date パラメータ処理する日付または時刻を指定します。 どちらか 日付 または DateTime タイプに対応しています。
例:
SELECT EXTRACT(DAY FROM toDate('2017-06-15'));
SELECT EXTRACT(MONTH FROM toDate('2017-06-15'));
SELECT EXTRACT(YEAR FROM toDate('2017-06-15'));
次の例では、テーブルを作成し、そこに値を挿入します DateTime タイプ。
CREATE TABLE test.Orders
(
OrderId UInt64,
OrderName String,
OrderDate DateTime
)
ENGINE = Log;
INSERT INTO test.Orders VALUES (1, 'Jarlsberg Cheese', toDateTime('2008-10-11 13:23:44'));
SELECT
toYear(OrderDate) AS OrderYear,
toMonth(OrderDate) AS OrderMonth,
toDayOfMonth(OrderDate) AS OrderDay,
toHour(OrderDate) AS OrderHour,
toMinute(OrderDate) AS OrderMinute,
toSecond(OrderDate) AS OrderSecond
FROM test.Orders;
┌─OrderYear─┬─OrderMonth─┬─OrderDay─┬─OrderHour─┬─OrderMinute─┬─OrderSecond─┐
│ 2008 │ 10 │ 11 │ 13 │ 23 │ 44 │
└───────────┴────────────┴──────────┴───────────┴─────────────┴─────────────┘
以下の例を見ることができます テスト.
INTERVAL
を作成します。 間隔-算術演算で使用されるべき型の値 日付 と DateTime-値を入力します。
間隔のタイプ:
SECONDMINUTEHOURDAYWEEKMONTHQUARTERYEAR
!!! warning "警告"
異なるタイプの間隔は結合できません。 次のような式は使用できません INTERVAL 4 DAY 1 HOUR. 間隔は、間隔の最小単位より小さい単位または等しい単位で指定します。, INTERVAL 25 HOUR. 次の例のように、連続した操作を使用できます。
例:
SELECT now() AS current_date_time, current_date_time + INTERVAL 4 DAY + INTERVAL 3 HOUR
┌───current_date_time─┬─plus(plus(now(), toIntervalDay(4)), toIntervalHour(3))─┐
│ 2019-10-23 11:16:28 │ 2019-10-27 14:16:28 │
└─────────────────────┴────────────────────────────────────────────────────────┘
も参照。
- 間隔 データ型
- toInterval 型変換関数
論理否定演算子
NOT a – The not(a) 機能。
論理And演算子
a AND b – Theand(a, b) 機能。
論理OR演算子
a OR b – The or(a, b) 機能。
条件演算子
a ? b : c – The if(a, b, c) 機能。
注:
条件演算子は、bとcの値を計算し、条件aが満たされているかどうかをチェックし、対応する値を返します。 もし b または C は アレイジョイン() 関数は、各行は関係なく、レプリケートされます “a” 条件だ
条件式
CASE [x]
WHEN a THEN b
[WHEN ... THEN ...]
[ELSE c]
END
もし x が指定される。 transform(x, [a, ...], [b, ...], c) function is used. Otherwise – multiIf(a, b, ..., c).
がない場合 ELSE c 句式のデフォルト値は次のとおりです NULL.
その transform 関数は動作しません NULL.
連結演算子
s1 || s2 – The concat(s1, s2) function.
ラムダ作成演算子
x -> expr – The lambda(x, expr) function.
次の演算子は角かっこであるため、優先順位はありません:
配列作成演算子
[x1, ...] – The array(x1, ...) function.
タプル作成演算子
(x1, x2, ...) – The tuple(x2, x2, ...) function.
連想性
すべての二項演算子は連想性を残しています。 例えば, 1 + 2 + 3 に変換されます plus(plus(1, 2), 3).
時にはこれはあなたが期待するように動作しません。 例えば, SELECT 4 > 2 > 3 結果は0になります。
効率のために、 and と or 関数は任意の数の引数を受け入れます。 の対応する鎖 AND と OR 演算子は、これらの関数の単一の呼び出しに変換されます。
チェック NULL
クリックハウスは IS NULL と IS NOT NULL 演算子。
IS NULL
- のために Null可能 型の値は、
IS NULL演算子の戻り値:1値がNULL.0そうでなければ
- その他の値については、
IS NULL演算子は常に返します0.
SELECT x+100 FROM t_null WHERE y IS NULL
┌─plus(x, 100)─┐
│ 101 │
└──────────────┘
IS NOT NULL
- のために Null可能 型の値は、
IS NOT NULL演算子の戻り値:0値がNULL.1そうでなければ
- その他の値については、
IS NOT NULL演算子は常に返します1.
SELECT * FROM t_null WHERE y IS NOT NULL
┌─x─┬─y─┐
│ 2 │ 3 │
└───┴───┘