ClickHouse/docs/ja/sql_reference/operators.md
2020-04-04 12:15:31 +03:00

9.0 KiB
Raw Blame History

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: 131.
  • MONTH — The number of a month. Possible values: 112.
  • YEAR — The year.
  • SECOND — The second. Possible values: 059.
  • MINUTE — The minute. Possible values: 059.
  • HOUR — The hour. Possible values: 023.

その 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 │
└─────────────────────┴────────────────────────────────────────────────────────┘

また見なさい

論理否定演算子

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 または CarrayJoin() この関数は、各行は関係なくレプリケートされます。 “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になります。

効率のため、 andor 関数は任意の数の引数を受け取ります。 対応する鎖の ANDOR 演算子は、これらの関数の単一の呼び出しに変換されます。

のチェック NULL

クリックハウスは IS NULLIS 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 │
└───┴───┘

元の記事