Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

دوال للتعامل مع القيم Nullable

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))
0

ifNull

أُضيف في: v1.1.0

يعيد قيمة بديلة إذا كانت الوسيطة الأولى NULL.

الصياغة

ifNull(x, alt)

المعاملات

  • x — القيمة المطلوب التحقق من كونها NULL. Any
  • alt — القيمة التي تُرجعها الدالة إذا كانت 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)

المعاملات

  • x — القيمة الأولى. Any
  • y — القيمة الثانية. Any

القيمة المُعادة

يعيد 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)            │
└────────────────┴────────────────────────────┘
Navigation