9.0 KiB
machine_translated | machine_translated_rev | toc_priority | toc_title |
---|---|---|---|
true | d734a8e46d |
37 | 演算子 |
演算子
すべての演算子は、優先順位と結合性に従って、クエリの解析段階で対応する関数に変換されます。 演算子のグループは優先順位の順にリストされます(リスト内の高いほど、演算子はその引数に接続されています)。
アクセス事業者
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-タイプの値。
間隔のタイプ:
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
!!! 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
は arrayJoin() この関数は、各行は関係なくレプリケートされます。 “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
- のために Nullable タイプ値は、
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
- のために Nullable タイプ値は、
IS NOT NULL
演算子の戻り値:0
値がNULL
.1
そうでなければ
- その他の値については、
IS NOT NULL
演算子は常に戻ります1
.
SELECT * FROM t_null WHERE y IS NOT NULL
┌─x─┬─y─┐
│ 2 │ 3 │
└───┴───┘