9.9 KiB
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: 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 │
└───┴───┘