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

9.9 KiB
Raw Blame History

machine_translated machine_translated_rev toc_priority toc_title
true d734a8e46d 37 اپراتورها

اپراتورها

همه اپراتورها در حال تبدیل به توابع مربوط به خود را در پرس و جو و تجزیه مرحله مطابق با اولویت و associativity. گروه اپراتورهای به ترتیب اولویت ذکر شده (بالاتر در لیست است, زودتر اپراتور به استدلال خود متصل).

اپراتورهای دسترسی

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) تابع.

منطقی و اپراتور

a AND b Theand(a, b) تابع.

منطقی یا اپراتور

a OR b The or(a, b) تابع.

اپراتور شرطی

a ? b : c The if(a, b, c) تابع.

یادداشت:

اپراتور مشروط محاسبه ارزش ب و ج, سپس چک چه شرایط ملاقات کرده است, و سپس مقدار مربوطه را برمی گرداند. اگر 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.

Associativity

همه اپراتورهای دودویی انجمن را ترک کرده اند. به عنوان مثال, 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 │
└───┴───┘

مقاله اصلی