* split up select.md * array-join.md basic refactoring * distinct.md basic refactoring * format.md basic refactoring * from.md basic refactoring * group-by.md basic refactoring * having.md basic refactoring * additional index.md refactoring * into-outfile.md basic refactoring * join.md basic refactoring * limit.md basic refactoring * limit-by.md basic refactoring * order-by.md basic refactoring * prewhere.md basic refactoring * adjust operators/index.md links * adjust sample.md links * adjust more links * adjust operatots links * fix some links * adjust aggregate function article titles * basic refactor of remaining select clauses * absolute paths in make_links.sh * run make_links.sh * remove old select.md locations * translate docs/es * translate docs/fr * translate docs/fa * remove old operators.md location * change operators.md links * adjust links in docs/es * adjust links in docs/es * minor texts adjustments * wip * update machine translations to use new links * fix changelog * es build fixes * get rid of some select.md links * temporary adjust ru links * temporary adjust more ru links * improve curly brace handling * adjust ru as well * fa build fix * ru link fixes * zh link fixes * temporary disable part of anchor checks
9.7 KiB
machine_translated | machine_translated_rev | toc_priority | toc_title |
---|---|---|---|
true | 72537a2d52 |
37 | اپراتورها |
اپراتورها
ClickHouse تبدیل اپراتورها به توابع مربوط به خود را در پرس و جو و تجزیه مرحله با توجه به اولویت اولویت و 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: 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 │
└─────────────────────┴────────────────────────────────────────────────────────┘
همچنین نگاه کنید به
اپراتور نفی منطقی
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 │
└───┴───┘