الانتقال إلى المحتوى الرئيسي

نظرة عامة

تعمل الدوال الحسابية على أي معاملين من النوع UInt8 أو UInt16 أو UInt32 أو UInt64 أو Int8 أو Int16 أو Int32 أو Int64 أو Float32 أو Float64. قبل تنفيذ العملية، يُحوَّل كلا المعاملين إلى نوع النتيجة. ويُحدَّد نوع النتيجة على النحو التالي (ما لم يُذكر خلاف ذلك في توثيق الدالة أدناه):
  • إذا كان عرض كلا المعاملين لا يتجاوز 32 بت، فسيكون حجم نوع النتيجة هو حجم النوع الأكبر التالي بعد أكبر المعاملين (ترقية حجم الأعداد الصحيحة). على سبيل المثال، UInt8 + UInt16 = UInt32 أو Float32 * Float32 = Float64.
  • إذا كان أحد المعاملين بعرض 64 بت أو أكثر، فسيكون حجم نوع النتيجة مساوياً لحجم أكبر المعاملين. على سبيل المثال، UInt32 + UInt128 = UInt128 أو Float32 * Float64 = Float64.
  • إذا كان أحد المعاملين موقَّعاً، فسيكون نوع النتيجة موقَّعاً أيضاً، وإلا فسيكون غير موقَّع. على سبيل المثال، UInt32 * Int32 = Int64 أو UInt32 * UInt32 = UInt64.
تضمن هذه القواعد أن يكون نوع النتيجة أصغر نوع يمكنه تمثيل جميع النتائج الممكنة. ومع أن هذا يضيف احتمال حدوث تجاوز عددي عند حدود نطاق القيم، فإنه يضمن تنفيذ العمليات الحسابية بسرعة باستخدام أكبر عرض أصلي للأعداد الصحيحة، وهو 64 بت. كما يضمن هذا السلوك التوافق مع العديد من قواعد البيانات الأخرى التي توفّر أعداداً صحيحة بطول 64 بت (BIGINT) باعتبارها أكبر نوع للأعداد الصحيحة. مثال:
SELECT toTypeName(0), toTypeName(0 + 0), toTypeName(0 + 0 + 0), toTypeName(0 + 0 + 0 + 0)
┌─toTypeName(0)─┬─toTypeName(plus(0, 0))─┬─toTypeName(plus(plus(0, 0), 0))─┬─toTypeName(plus(plus(plus(0, 0), 0), 0))─┐
│ UInt8         │ UInt16                 │ UInt32                          │ UInt64                                   │
└───────────────┴────────────────────────┴─────────────────────────────────┴──────────────────────────────────────────┘
تحدث حالات تجاوز السعة بالطريقة نفسها كما في C++.

abs

قُدِّمت في: v1.1.0 تحسب القيمة المطلقة لـ x. ولا يكون لها أي تأثير إذا كان x من نوع غير موقَّع. أما إذا كان x من نوع موقَّع، فإنها تُرجع عددًا غير موقَّع. البنية
abs(x)
الوسائط
  • x — القيمة المطلقة المطلوب حسابها لـ x
القيمة المُعادة القيمة المطلقة لـ x أمثلة مثال للاستخدام
Query
SELECT abs(-0.5)
Response
0.5

avg2

أُضيف في: v25.11.0 يحسب ويُرجع متوسط قيمة المعاملات المُدخلة. يدعم الأنواع العددية والزمنية. البنية
avg2(x1, x2])
الوسائط
  • x1, x2] — يقبل قيمتين لحساب المتوسط.
القيمة المُعادة تُرجِع متوسط قيم الوسائط المقدَّمة، مع ترقية النوع إلى أكبر نوع متوافق. أمثلة الأنواع العددية
Query
SELECT avg2(toUInt8(3), 1.0) AS result, toTypeName(result) AS type;
-- The type returned is a Float64 as the UInt8 must be promoted to 64 bit for the comparison.
Response
┌─result─┬─type────┐
│      2 │ Float64 │
└────────┴─────────┘
الأنواع العشرية
Query
SELECT avg2(toDecimal32(1, 2), 2) AS result, toTypeName(result) AS type;
Response
┌─result─┬─type──────────┐
│    1.5 │ Decimal(9, 2) │
└────────┴───────────────┘
أنواع Date
Query
SELECT avg2(toDate('2025-01-01'), toDate('2025-01-05')) AS result, toTypeName(result) AS type;
Response
┌─────result─┬─type─┐
│ 2025-01-03 │ Date │
└────────────┴──────┘
أنواع DateTime
Query
SELECT avg2(toDateTime('2025-01-01 00:00:00'), toDateTime('2025-01-03 12:00:00')) AS result, toTypeName(result) AS type;
Response
┌──────────────result─┬─type─────┐
│ 2025-01-02 06:00:00 │ DateTime │
└─────────────────────┴──────────┘
أنواع Time64
Query
SELECT avg2(toTime64('12:00:00', 0), toTime64('14:00:00', 0)) AS result, toTypeName(result) AS type;
Response
┌───result─┬─type──────┐
│ 13:00:00 │ Time64(0) │
└──────────┴───────────┘

byteSwap

طُرحت في: v23.10.0 تعكس هذه الدالة بايتات عدد صحيح، أي تغيّر ترتيب البايتات الخاص به. يمكن توضيح المثال أدناه على النحو التالي:
  1. حوِّل العدد الصحيح ذي الأساس 10 إلى ما يقابله بالتنسيق السداسي العشري وبترتيب big-endian، أي 3351772109 -> C7 C7 FB CD (4 بايتات)
  2. اعكس البايتات، أي C7 C7 FB CD -> CD FB C7 C7
  3. حوِّل النتيجة مرة أخرى إلى عدد صحيح بافتراض ترتيب big-endian، أي CD FB C7 C7 -> 3455829959 من حالات استخدام هذه الدالة عكس عناوين IPv4:
┌─toIPv4(byteSwap(toUInt32(toIPv4('205.251.199.199'))))─┐
│ 199.199.251.205                                       │
└───────────────────────────────────────────────────────┘
الصيغة
byteSwap(x)
المعاملات
  • x — قيمة عدد صحيح. (U)Int*
القيمة المُعادة تُرجع x بعد عكس ترتيب البايتات. (U)Int* أمثلة مثال على الاستخدام
Query
SELECT byteSwap(3351772109)
Response
3455829959
8-بت
Query
SELECT byteSwap(54)
Response
54
16 بت
Query
SELECT byteSwap(4135)
Response
10000
32 بت
Query
SELECT byteSwap(3351772109)
Response
3455829959
64 بت
Query
SELECT byteSwap(123294967295)
Response
18439412204227788800

divide

أُضيف في: v1.1.0 يحسب ناتج قسمة القيمتين a وb. ويكون نوع النتيجة دائمًا Float64. وتوفّر الدالة intDiv القسمة الصحيحة.
تؤدي القسمة على 0 إلى إرجاع inf أو -inf أو nan.
البنية
divide(x, y)
المعاملات
  • x — المقسوم - y — المقسوم عليه
القيمة المُعادة ناتج قسمة x على y أمثلة قسمة عددين
Query
SELECT divide(25,5) AS quotient, toTypeName(quotient)
Response
5 Float64
القسمة على صفر
Query
SELECT divide(25,0)
Response
inf

divideDecimal

متاح منذ: v22.12.0 يجري قسمة عددين عشريين. تكون القيمة الناتجة من النوع Decimal256. يمكن تحديد مقياس النتيجة صراحةً باستخدام الوسيط result_scale (عدد صحيح ثابت ضمن النطاق [0, 76]). وإذا لم يُحدَّد، فسيكون مقياس النتيجة هو أكبر مقياس بين الوسيطات المُعطاة.
تعمل هذه الدالة بسرعة أبطأ بكثير من divide الاعتيادية. إذا لم تكن بحاجة فعلًا إلى دقة مضبوطة و/أو كنت تحتاج إلى حساب سريع، ففكّر في استخدام divide.
الصياغة
divideDecimal(x, y[, result_scale])
الوسائط
  • x — القيمة الأولى: Decimal. - y — القيمة الثانية: Decimal. - result_scale — مقياس النتيجة. النوع Int/UInt.
القيمة المُعادة ناتج القسمة بالمقياس المحدد. Decimal256 أمثلة مثال 1
Query
divideDecimal(toDecimal256(-12, 0), toDecimal32(2.1, 1), 10)
Response
┌─divideDecimal(toDecimal256(-12, 0), toDecimal32(2.1, 1), 10)─┐
│                                                -5.7142857142 │
└──────────────────────────────────────────────────────────────┘
مثال 2
Query
SELECT toDecimal64(-12, 1) / toDecimal32(2.1, 1);
SELECT toDecimal64(-12, 1) as a, toDecimal32(2.1, 1) as b, divideDecimal(a, b, 1), divideDecimal(a, b, 5);
Response
┌─divide(toDecimal64(-12, 1), toDecimal32(2.1, 1))─┐
│                                             -5.7 │
└──────────────────────────────────────────────────┘
┌───a─┬───b─┬─divideDecimal(toDecimal64(-12, 1), toDecimal32(2.1, 1), 1)─┬─divideDecimal(toDecimal64(-12, 1), toDecimal32(2.1, 1), 5)─┐
│ -12 │ 2.1 │                                                       -5.7 │                                                   -5.71428 │
└─────┴─────┴────────────────────────────────────────────────────────────┴────────────────────────────────────────────────────────────┘

divideOrNull

أُضيفت في: v25.5.0 مماثلة لـ divide، لكنها تُرجع NULL عند القسمة على صفر. الصياغة
divideOrNull(x, y)
الوسيطات
  • x — المقسوم - y — المقسوم عليه
القيمة المُعادة حاصل قسمة x على y، أو NULL. أمثلة القسمة على صفر
Query
SELECT divideOrNull(25, 0)
Response
\N

gcd

قُدِّمت في: v1.1.0 تُرجِع القاسم المشترك الأكبر للقيمتين a و b. يُطرَح استثناء عند القسمة على الصفر أو عند قسمة أصغر عدد سالب على سالب واحد. البنية
gcd(x, y)
الوسيطات
  • x — العدد الصحيح الأول - y — العدد الصحيح الثاني
القيمة المُعادة القاسم المشترك الأكبر لـ x و y. أمثلة مثال على الاستخدام
Query
SELECT gcd(12, 18)
Response
6

ifNotFinite

أُضيفت في: v20.3.0 يتحقق مما إذا كانت قيمة الفاصلة العائمة منتهية. يمكنك الحصول على نتيجة مماثلة باستخدام المعامل الثلاثي: isFinite(x) ? x : y. الصيغة
ifNotFinite(x,y)
الوسائط
  • x — القيمة المراد التحقق مما إذا كانت لا نهائية. Float*
  • y — القيمة البديلة. Float*
القيمة المُعادة
  • x إذا كانت x منتهية.
  • y إذا كانت x غير منتهية.
أمثلة مثال على الاستخدام
Query
SELECT 1/0 AS infimum, ifNotFinite(infimum,42)
Response
inf  42

intDiv

أُضيفت في: v1.1.0 تُجري قسمةً صحيحة للقيمتين x وy. وبعبارة أخرى، تحسب خارج القسمة مع التقريب إلى الأسفل إلى أقرب عدد صحيح أصغر. تكون النتيجة بنفس عرض المقسوم (المعلَمة الأولى). يُثار استثناء عند القسمة على الصفر، أو عندما لا يقع خارج القسمة ضمن نطاق المقسوم، أو عند قسمة أصغر عدد سالب ممكن على سالب واحد. الصياغة
intDiv(x, y)
الوسيطات
  • x — المعامل الأيسر. - y — المعامل الأيمن.
القيمة المُعادة ناتج القسمة الصحيحة لـ x على y أمثلة القسمة الصحيحة لعددين من النوع Float
Query
SELECT intDiv(toFloat64(1), 0.001) AS res, toTypeName(res)
Response
┌──res─┬─toTypeName(intDiv(toFloat64(1), 0.001))─┐
│ 1000 │ Int64                                   │
└──────┴─────────────────────────────────────────┘
ناتج القسمة لا يقع ضمن نطاق المقسوم
Query
SELECT
intDiv(1, 0.001) AS res,
toTypeName(res)
Response
Received exception from server (version 23.2.1):
Code: 153. DB::Exception: Received from localhost:9000. DB::Exception:
Cannot perform integer division, because it will produce infinite or too
large number: While processing intDiv(1, 0.001) AS res, toTypeName(res).
(ILLEGAL_DIVISION)

intDivOrNull

تم تقديمه في: v25.5.0 مماثلة لـ intDiv، لكنها تُرجع NULL عند القسمة على صفر أو عند قسمة أصغر عدد سالب على سالب واحد. الصياغة
intDivOrNull(x, y)
الوسيطات
  • x — المعامل الأيسر. (U)Int*
  • y — المعامل الأيمن. (U)Int*
القيمة المُعادة ناتج القسمة الصحيحة لـ x و y، أو NULL. أمثلة القسمة الصحيحة على الصفر
Query
SELECT intDivOrNull(1, 0)
Response
\N
قسمة أصغر عدد سالب على ‎-1
Query
SELECT intDivOrNull(-9223372036854775808, -1)
Response
\N

intDivOrZero

أُضيفت في: v1.1.0 مماثلة لـ intDiv، لكنها تُرجِع صفرًا عند القسمة على صفر أو عند قسمة أصغر عدد صحيح سالب ممكن على سالب واحد. البنية
intDivOrZero(a, b)
المعاملات
  • a — المعامل الأيسر. (U)Int*
  • b — المعامل الأيمن. (U)Int*
القيمة المُعادة ناتج القسمة الصحيحة للعددين a وb، أو صفر. أمثلة القسمة الصحيحة على صفر
Query
SELECT intDivOrZero(1, 0)
Response
0
قسمة أصغر عدد سالب على ‎-1
Query
SELECT intDivOrZero(0.05, -1)
Response
0

isFinite

أُضيفت في: v1.1.0 تُرجع 1 إذا كانت الوسيطة من النوع Float32 أو Float64 أو BFloat16 غير لانهائية وليست NaN، وإلا فستُرجع هذه الدالة 0. البنية
isFinite(x)
الوسيطات
  • x — العدد المراد التحقق مما إذا كان متناهيًا. Float* أو BFloat16
القيمة المُعادة 1 إذا لم تكن قيمة x غير متناهية ولم تكن NaN، وإلا فالقيمة 0. أمثلة اختبر ما إذا كان العدد متناهيًا
Query
SELECT isFinite(inf)
Response
0

isInfinite

أُضيف في: v1.1.0 تُعيد 1 إذا كانت الوسيطة من النوع Float32 أو Float64 أو BFloat16 قيمةً لا نهائية، وإلا فتُعيد هذه الدالة 0. لاحظ أن القيمة 0 تُعاد أيضًا في حالة NaN. البنية
isInfinite(x)
الوسيطات
  • x — العدد المراد التحقق مما إذا كان لا نهائيًا. Float* أو BFloat16
القيمة المُعادة 1 إذا كان x لا نهائيًا، وإلا 0 (بما في ذلك NaN). أمثلة التحقق مما إذا كان العدد لا نهائيًا
Query
SELECT isInfinite(inf), isInfinite(NaN), isInfinite(10))
Response
1 0 0

isNaN

أُضيفت في: v1.1.0 تعيد 1 إذا كانت الوسيطة من النوع Float32 أو Float64 أو BFloat16 تساوي NaN، وإلا فتعيد 0. الصياغة
isNaN(x)
الوسائط
  • x — الوسيط المطلوب التحقق مما إذا كانت قيمته NaN. Float* أو BFloat16
القيمة المعادة 1 إذا كانت القيمة NaN، وإلا 0 أمثلة مثال على الاستخدام
Query
SELECT isNaN(NaN)
Response
1

lcm

استُحدثت في: v1.1.0 تعيد المضاعف المشترك الأصغر للقيمتين x وy. يُثار استثناء عند القسمة على صفر أو عند قسمة أصغر عدد سالب ممكن على سالب واحد. البنية
lcm(x, y)
المعاملات
  • x — العدد الصحيح الأول. (U)Int*
  • y — العدد الصحيح الثاني. (U)Int*
القيمة المُعادة يعيد المضاعف المشترك الأصغر لـ x وy. (U)Int* أمثلة مثال على الاستخدام
Query
SELECT lcm(6, 8)
Response
24

max2

تم تقديمه في: v21.11.0 يعيد القيمة الأكبر بين قيمتين رقميتين x وy. الصيغة
max2(x, y)
الوسيطات القيمة المُعادة تُرجِع أكبر القيمتين x وy. Float64 أمثلة مثال للاستخدام
Query
SELECT max2(-1, 2)
Response
2

midpoint

قُدِّمت في: v25.11.0 تحسب وتُرجع متوسط قيمة الوسيطات المُقدَّمة. تدعم الأنواع العددية والزمنية. البنية
midpoint(x1[, x2, ...])
الوسائط
  • x1[, x2, ...] — تقبل قيمة واحدة أو عدة قيم لحساب المتوسط.
القيمة المُعادة تعيد متوسط قيم الوسائط المُدخلة، مع ترقية النوع إلى أكبر نوع متوافق. أمثلة الأنواع العددية
Query
SELECT midpoint(1, toUInt8(3), 0.5) AS result, toTypeName(result) AS type;
-- The type returned is a Float64 as the UInt8 must be promoted to 64 bit for the comparison.
Response
┌─result─┬─type────┐
│    1.5 │ Float64 │
└────────┴─────────┘
أنواع الأعداد العشرية
Query
SELECT midpoint(toDecimal32(1.5, 2), toDecimal32(1, 1), 2) AS result, toTypeName(result) AS type;
Response
┌─result─┬─type──────────┐
│    1.5 │ Decimal(9, 2) │
└────────┴───────────────┘
أنواع Date
Query
SELECT midpoint(toDate('2025-01-01'), toDate('2025-01-05')) AS result, toTypeName(result) AS type;
Response
┌─────result─┬─type─┐
│ 2025-01-03 │ Date │
└────────────┴──────┘
أنواع DateTime
Query
SELECT midpoint(toDateTime('2025-01-01 00:00:00'), toDateTime('2025-01-03 12:00:00')) AS result, toTypeName(result) AS type;
Response
┌──────────────result─┬─type─────┐
│ 2025-01-02 06:00:00 │ DateTime │
└─────────────────────┴──────────┘
أنواع Time64
Query
SELECT midpoint(toTime64('12:00:00', 0), toTime64('14:00:00', 0)) AS result, toTypeName(result) AS type;
Response
┌───result─┬─type──────┐
│ 13:00:00 │ Time64(0) │
└──────────┴───────────┘

min2

أُضيف في: v21.11.0 يُرجع القيمة الأصغر من بين القيمتين العدديتين x وy. الصيغة
min2(x, y)
الوسيطات القيمة المُعادة تعيد أصغر القيمتين x وy. Float64 أمثلة مثال على الاستخدام
Query
SELECT min2(-1, 2)
Response
-1

minus

أُضيف في: v1.1.0 يحسب الفرق بين القيمتين a وb. تكون النتيجة دائمًا موقَّعة. وكما في plus، يمكن طرح عدد صحيح من تاريخ أو تاريخ مع وقت. بالإضافة إلى ذلك، يُدعَم الطرح بين قيمتَي تاريخ مع وقت، وينتج عنه الفرق الزمني بينهما. البنية
minus(x, y)
الوسيطات
  • x — المطروح منه. - y — المطروح.
القيمة المعادة x ناقص y أمثلة طرح عددين
Query
SELECT minus(10, 5)
Response
5
طرح عدد صحيح من تاريخ
Query
SELECT minus(toDate('2025-01-01'),5)
Response
2024-12-27

modulo

أُضيف في: v1.1.0 يحسب باقي قسمة القيمتين a وb. يكون نوع النتيجة عددًا صحيحًا إذا كان كلا المُدخلين عددين صحيحين. وإذا كان أحد المُدخلين عددًا ذا فاصلة عائمة، فسيكون نوع النتيجة Float64. يُحسب الباقي كما في C++. وتُستخدم القسمة المبتورة مع الأعداد السالبة. يُطلق استثناء عند القسمة على الصفر أو عند قسمة أصغر عدد سالب على سالب واحد. البنية
modulo(a, b)
الأسماء البديلة: mod الوسائط
  • a — المقسوم - b — المقسوم عليه (الموديولس)
القيمة المُعادة الباقي من a % b أمثلة مثال على الاستخدام
Query
SELECT modulo(5, 2)
Response
1

moduloLegacy

قُدِّم في: v1.1.0 يحسب باقي القسمة. هذا هو التنفيذ القديم لـ modulo الذي يستخدم العامل % في C++، وقد يُنتج نتائج سالبة عند استخدام وسيطات سالبة. وُجدت هذه الدالة للحفاظ على التوافق مع الإصدارات السابقة لمنطق تقسيم الجدول القديم. استخدم modulo أو positiveModulo للحصول على السلوك القياسي. الصياغة
moduloLegacy(a, b)
الوسيطات القيمة المُعادة تعيد ناتج باقي القسمة. (U)Int* أو Float* أمثلة الاستخدام الأساسي
Query
SELECT moduloLegacy(10, 3)
Response
1

moduloOrNull

أُضيف في: v25.5.0 يحسب remainder عند قسمة a على b. وهو مشابه للدالة modulo، إلا أن moduloOrNull تُرجع NULL إذا كانت الوسيطة اليمنى تساوي 0. البنية
moduloOrNull(x, y)
الأسماء البديلة: modOrNull المعاملات القيمة المُعادة تعيد ناتج باقي قسمة x على y، أو NULL إذا كان القاسم صفراً. أمثلة moduloOrNull عندما يكون القاسم صفراً
Query
SELECT moduloOrNull(5, 0)
Response
\N

moduloOrZero

استُحدثت في: v20.3.0 تشبه modulo، لكنها تُرجع صفرًا عندما يكون القاسم صفرًا، بدلًا من إرجاع استثناء كما في الدالة modulo. البنية
moduloOrZero(a, b)
الوسيطات القيمة المعادة ترجع باقي قسمة a % b، أو 0 إذا كان المقسوم عليه 0. أمثلة مثال على الاستخدام
Query
SELECT moduloOrZero(5, 0)
Response
0

multiply

متوفرة منذ: v1.1.0 يحسب حاصل ضرب القيمتين x وy. الصيغة
multiply(x, y)
المعاملات القيمة المُعادة يعيد ناتج ضرب x في y أمثلة ضرب عددين
Query
SELECT multiply(5,5)
Response
25

multiplyDecimal

أُضيف في: v22.12.0 يُجري عملية ضرب على عددين من النوع Decimal. ستكون قيمة النتيجة من النوع Decimal256. يمكن تحديد مقياس النتيجة صراحةً باستخدام الوسيط result_scale (عدد صحيح ثابت ضمن النطاق [0, 76]). وإذا لم يُحدَّد، فسيكون مقياس النتيجة هو أكبر مقياس بين الوسيطات المُعطاة.
تعمل هذه الدوال أبطأ بكثير من multiply العادية. إذا لم تكن بحاجة فعلًا إلى دقة مضبوطة و/أو كنت تحتاج إلى حسابات سريعة، ففكّر في استخدام multiply
البنية
multiplyDecimal(a, b[, result_scale])
المعاملات
  • a — القيمة الأولى. Decimal
  • b — القيمة الثانية. Decimal
  • result_scale — عدد المنازل العشرية في النتيجة. (U)Int*
القيمة المعادة ناتج الضرب بعدد المنازل العشرية المحدد. النوع: Decimal256 أمثلة مثال على الاستخدام
Query
SELECT multiplyDecimal(toDecimal256(-12, 0), toDecimal32(-2.1, 1), 1)
Response
25.2
الاختلاف عن الضرب العادي
Query
SELECT multiplyDecimal(toDecimal256(-12, 0), toDecimal32(-2.1, 1), 1)
Response
┌─multiply(toDecimal64(-12.647, 3), toDecimal32(2.1239, 4))─┐
│                                               -26.8609633 │
└───────────────────────────────────────────────────────────┘
┌─multiplyDecimal(toDecimal64(-12.647, 3), toDecimal32(2.1239, 4))─┐
│                                                         -26.8609 │
└──────────────────────────────────────────────────────────────────┘
فيض Decimal
Query
SELECT
    toDecimal64(-12.647987876, 9) AS a,
    toDecimal64(123.967645643, 9) AS b,
    multiplyDecimal(a, b);
SELECT
    toDecimal64(-12.647987876, 9) AS a,
    toDecimal64(123.967645643, 9) AS b,
    a * b;
Response
┌─────────────a─┬─────────────b─┬─multiplyDecimal(toDecimal64(-12.647987876, 9), toDecimal64(123.967645643, 9))─┐
│ -12.647987876 │ 123.967645643 │                                                               -1567.941279108 │
└───────────────┴───────────────┴───────────────────────────────────────────────────────────────────────────────┘
Received exception from server (version 22.11.1):
Code: 407. DB::Exception: Received from localhost:9000. DB::Exception: Decimal math overflow:
While processing toDecimal64(-12.647987876, 9) AS a, toDecimal64(123.967645643, 9) AS b, a * b. (DECIMAL_OVERFLOW)

negate

تمت إضافته في: v1.1.0 يُرجِع نفي الوسيطة x. وتكون النتيجة دائمًا من نوع موقَّع. الصيغة
negate(x)
الوسائط
  • x — القيمة المطلوب عكس إشارتها.
القيمة المعادة يُرجع القيمة -x عند إدخال x أمثلة مثال على الاستخدام
Query
SELECT negate(10)
Response
-10

plus

أُضيفت في: v1.1.0 تحسب مجموع القيمتين x وy. الاسم البديل: x + y (المعامل). يمكن أيضًا جمع عدد صحيح مع تاريخ أو تاريخ مع وقت. تزيد العملية الأولى عدد الأيام في التاريخ، بينما تزيد العملية الثانية عدد الثواني في التاريخ مع الوقت. ويمكن أيضًا جمع تاريخ ووقت. تؤدي إضافة Date وTime إلى إنتاج DateTime. كما تؤدي إضافة Date وTime64، أو Date32 و Time أو Time64، إلى إنتاج DateTime64. الصياغة
plus(x, y)
المعاملات
  • x — المعامل في الطرف الأيسر. - y — المعامل في الطرف الأيمن.
القيمة المُعادة تُرجع مجموع x و y أمثلة جمع عددين
Query
SELECT plus(5,5)
Response
10
إضافة عدد صحيح إلى تاريخ
Query
SELECT plus(toDate('2025-01-01'),5)
Response
2025-01-06
إضافة تاريخ ووقت
Query
SELECT toDate('2025-01-01') + CAST('14:30:25', 'Time')
Response
2025-01-01 14:30:25

positiveModulo

أُضيفت في: v22.11.0 تحسب الباقي عند قسمة x على y. وهي مشابهة للدالة modulo، إلا أن positiveModulo تعيد دائمًا عددًا غير سالب. الصيغة
positiveModulo(x, y)
الأسماء البديلة: positive_modulo, pmod الوسيطات القيمة المُعادة تعيد الفرق بين x وأكبر عدد صحيح لا يتجاوز x ويقبل القسمة على y. أمثلة مثال على الاستخدام
Query
SELECT positiveModulo(-1, 10)
Response
9

positiveModuloOrNull

تم تقديمها في: v25.5.0 تحسب الباقي عند قسمة a على b. وهي مشابهة للدالة positiveModulo، باستثناء أن positiveModuloOrNull تُرجِع NULL إذا كان المعامل الأيمن يساوي 0. الصياغة
positiveModuloOrNull(x, y)
الأسماء البديلة: positive_modulo_or_null, pmodOrNull الوسائط القيمة المُعادة تعيد الفرق بين x وأقرب عدد صحيح لا يزيد عن x ويقبل القسمة على y، وتُعيد null عندما يكون القاسم صفراً. أمثلة positiveModuloOrNull
Query
SELECT positiveModuloOrNull(5, 0)
Response
\N
آخر تعديل في ٢٥ يونيو ٢٠٢٦