assumeNotNull
قُدِّمت في: v1.1.0
تعيد القيمة غير Nullable المقابلة لقيمة من النوع Nullable.
إذا كانت القيمة الأصلية هي NULL، فقد تُعاد نتيجة غير محددة.
انظر أيضًا: الدالتان ifNull وcoalesce.
الصيغة
assumeNotNull(x)الوسيطات
x— القيمة الأصلية لأي نوع Nullable.Nullable(T)
القيمة المُعادة
يعيد قيمة غير قابلة لأن تكون NULL إذا لم تكن القيمة الأصلية NULL، وإلا فيُعيد قيمة عشوائية إذا كانت قيمة الإدخال NULL. Any
أمثلة
مثال على الاستخدام
CREATE TABLE t_null (x Int8, y Nullable(Int8))
ENGINE=MergeTree()
ORDER BY x;
INSERT INTO t_null VALUES (1, NULL), (2, 3);
SELECT assumeNotNull(y) FROM t_null;
SELECT toTypeName(assumeNotNull(y)) FROM t_null;┌─assumeNotNull(y)─┐
│ 0 │
│ 3 │
└──────────────────┘
┌─toTypeName(assumeNotNull(y))─┐
│ Int8 │
│ Int8 │
└──────────────────────────────┘coalesce
أُضيفت في: v1.1.0
تُرجِع الوسيطة الأولى غير NULL من اليسار.
الصياغة
coalesce(x[, y, ...])الوسائط
x[, y, ...]— أي عدد من الوسائط من نوع غير مركب. يجب أن تكون جميع الوسائط من أنواع بيانات متوافقة فيما بينها.Any
القيمة المعادة
تعيد أول وسيط غير NULL، وإلا فتعيد NULL إذا كانت جميع الوسائط NULL. Any أو NULL
أمثلة
مثال على الاستخدام
-- Consider a list of contacts that may specify multiple ways to contact a customer.
CREATE TABLE aBook
(
name String,
mail Nullable(String),
phone Nullable(String),
telegram Nullable(UInt32)
)
ENGINE = MergeTree
ORDER BY tuple();
INSERT INTO aBook VALUES ('client 1', NULL, '123-45-67', 123), ('client 2', NULL, NULL, NULL);
-- The mail and phone fields are of type String, but the telegram field is UInt32 so it needs to be converted to String.
-- Get the first available contact method for the customer from the contact list
SELECT name, coalesce(mail, phone, CAST(telegram,'Nullable(String)')) FROM aBook;┌─name─────┬─coalesce(mail, phone, CAST(telegram, 'Nullable(String)'))─┐
│ client 1 │ 123-45-67 │
│ client 2 │ ᴺᵁᴸᴸ │
└──────────┴───────────────────────────────────────────────────────────┘firstNonDefault
أُضيف: v25.9.0
يعيد أول قيمة غير افتراضية من مجموعة من المعاملات
صيغة
firstNonDefault(arg1[, arg2[ ...]])وسيطات الدالة
arg1— الوسيط الأول المطلوب التحقق منه -arg2— الوسيط الثاني المطلوب التحقق منه -...— وسائط إضافية مطلوب التحقق منها
القيمة المُعادة
نوع النتيجة هو النوع الأعلى لجميع الوسائط
أمثلة
الأعداد الصحيحة
SELECT firstNonDefault(0, 1, 2)1سلاسل نصية
SELECT firstNonDefault('', 'hello', 'world')helloقيم NULL
SELECT firstNonDefault(NULL, 0 :: UInt8, 1 :: UInt8)1صفر من النوع Nullable
SELECT firstNonDefault(NULL, 0 :: Nullable(UInt8), 1 :: Nullable(UInt8))0ifNull
أُضيف في: v1.1.0
يعيد قيمة بديلة إذا كانت الوسيطة الأولى NULL.
الصياغة
ifNull(x, alt)المعاملات
x— القيمة المطلوب التحقق من كونهاNULL.Anyalt— القيمة التي تُرجعها الدالة إذا كانتxتساويNULL.Any
القيمة المُعادة
تُرجع قيمة x إذا لم تكن NULL، وإلا فتُرجع alt. Any
أمثلة
مثال على الاستخدام
SELECT ifNull('a', 'b'), ifNull(NULL, 'b');┌─ifNull('a', 'b')─┬─ifNull(NULL, 'b')─┐
│ a │ b │
└──────────────────┴───────────────────┘isNotNull
أُضيف في: v1.1.0
يتحقق مما إذا كانت الوسيطة لا تساوي NULL.
انظر أيضًا: العامل IS NOT NULL.
البنية
isNotNull(x)المعاملات
x— قيمة من نوع بيانات غير مركّب.Any
القيمة المُعادة
تُرجع 1 إذا كانت x ليست NULL، وإلا فتُرجع 0. UInt8
أمثلة
مثال على الاستخدام
CREATE TABLE t_null
(
x Int32,
y Nullable(Int32)
)
ENGINE = MergeTree
ORDER BY tuple();
INSERT INTO t_null VALUES (1, NULL), (2, 3);
SELECT x FROM t_null WHERE isNotNull(y);┌─x─┐
│ 2 │
└───┘isNull
أُضيف في: v1.1.0
يتحقق مما إذا كانت الوسيطة تساوي NULL.
راجع أيضًا: العامل IS NULL.
البنية
isNull(x)الوسائط
x— قيمة من نوع بيانات غير مركّب.Any
القيمة المُعادة
تُرجع 1 إذا كانت x تساوي NULL، وإلا فتُرجع 0. UInt8
أمثلة
مثال على الاستخدام
CREATE TABLE t_null
(
x Int32,
y Nullable(Int32)
)
ENGINE = MergeTree
ORDER BY tuple();
INSERT INTO t_null VALUES (1, NULL), (2, 3);
SELECT x FROM t_null WHERE isNull(y);┌─x─┐
│ 1 │
└───┘isNullable
أُضيف: v22.7.0
يتحقق مما إذا كان نوع بيانات المعامل هو Nullable (أي إنه يسمح بقيم NULL).
صيغة
isNullable(x)وسيطات الدالة
x— قيمة من أي نوع بيانات.Any
القيمة المعادة
تعيد 1 إذا كانت x من نوع البيانات Nullable، وإلا فتعيد 0. UInt8
أمثلة
مثال للاستخدام
CREATE TABLE tab (
ordinary_col UInt32,
nullable_col Nullable(UInt32)
)
ENGINE = MergeTree
ORDER BY tuple();
INSERT INTO tab (ordinary_col, nullable_col) VALUES (1,1), (2, 2), (3,3);
SELECT isNullable(ordinary_col), isNullable(nullable_col) FROM tab;┌─isNullable(ordinary_col)─┬─isNullable(nullable_col)─┐
│ 0 │ 1 │
│ 0 │ 1 │
│ 0 │ 1 │
└──────────────────────────┴──────────────────────────┘isZeroOrNull
استُحدث في: v20.3.0
يتحقق مما إذا كانت الوسيطة تساوي صفرًا (0) أو NULL.
الصيغة
isZeroOrNull(x)المعاملات
x— قيمة رقمية.UInt
القيمة المُعادة
تُرجِع 1 إذا كانت x هي NULL أو تساوي صفرًا، وإلا فتُرجِع 0. UInt8/16/32/64 أو Float32/Float64
أمثلة
مثال على الاستخدام
CREATE TABLE t_null
(
x Int32,
y Nullable(Int32)
)
ENGINE = MergeTree
ORDER BY tuple();
INSERT INTO t_null VALUES (1, NULL), (2, 0), (3, 3);
SELECT x FROM t_null WHERE isZeroOrNull(y);┌─x─┐
│ 1 │
│ 2 │
└───┘nullIf
أُضيفت في: v1.1.0
تُرجِع NULL إذا تساوى الوسيطان.
الصياغة
nullIf(x, y)المعاملات
القيمة المُعادة
يعيد NULL إذا كان المعاملان متساويين، وإلا فيعيد المعامل الأول. NULL أو Nullable(x)
أمثلة
مثال على الاستخدام
SELECT nullIf(1, 1), nullIf(1, 2);┌─nullIf(1, 1)─┬─nullIf(1, 2)─┐
│ ᴺᵁᴸᴸ │ 1 │
└──────────────┴──────────────┘toNullable
أُضيف في: v1.1.0
يحوّل نوع الوسيطة المُقدَّمة إلى Nullable.
الصيغة
toNullable(x)الوسائط
x— قيمة من أي نوع غير مركب.Any
القيمة المُعادة
تعيد قيمة الإدخال، ولكن بنوع Nullable. Nullable(Any)
أمثلة
مثال على الاستخدام
SELECT toTypeName(10), toTypeName(toNullable(10));┌─toTypeName(10)─┬─toTypeName(toNullable(10))─┐
│ UInt8 │ Nullable(UInt8) │
└────────────────┴────────────────────────────┘