Help wanted!
The following content of this documentation page has been machine-translated. But unlike other websites, it is not done on the fly. This translated text lives on GitHub repository alongside main ClickHouse codebase and waits for fellow native speakers to make it more human-readable. You can also use the original English version as a reference.
演算子
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-値を入力します。
間隔のタイプ:
- SECOND
- MINUTE
- HOUR
- DAY
- WEEK
- MONTH
- QUARTER
- YEAR
警告
異なるタイプの間隔は結合できません。 次のような式は使用できません 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 │
└───┴───┘