> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-fbfa8bee.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> توثيق لمُعدِّل نوع البيانات Nullable في ClickHouse

# Nullable(T)

يسمح بتخزين وسم خاص ([NULL](/ar/reference/syntax)) يشير إلى "قيمة مفقودة" إلى جانب القيم العادية التي يسمح بها `T`. على سبيل المثال، يمكن لعمود من النوع `Nullable(Int8)` تخزين قيم من نوع `Int8`، بينما تُخزَّن `NULL` في الصفوف التي لا تحتوي على قيمة.

لا يمكن أن يكون `T` أيًا من أنواع البيانات المركبة التالية:

* [Array](/ar/reference/data-types/array) — غير مدعوم
* [Map](/ar/reference/data-types/map) — غير مدعوم
* [Tuple](/ar/reference/data-types/tuple) — يتوفر دعم تجريبي\*

ومع ذلك، **يمكن لأنواع البيانات المركبة أن تتضمن** قيمًا من النوع `Nullable`، مثل `Array(Nullable(Int8))` أو `Tuple(Nullable(String), Nullable(Int64))`.

<Info>
  **بيتا: Nullable Tuples**

  * [Nullable(Tuple(...))](/ar/reference/data-types/tuple#nullable-tuple) مدعوم عند تفعيل `enable_nullable_tuple_type = 1`.
</Info>

لا يمكن تضمين حقل من النوع `Nullable` في فهارس الجدول.

تكون `NULL` هي القيمة الافتراضية لأي نوع `Nullable`، ما لم يُحدَّد خلاف ذلك في إعدادات خادم ClickHouse.

<div id="storage-features">
  ## ميزات التخزين
</div>

لتخزين قيم النوع `Nullable` في عمود بجدول، يستخدم ClickHouse ملفًا منفصلًا لأقنعة `NULL` بالإضافة إلى الملف العادي الذي يحتوي على القيم. وتُمكّن البيانات الموجودة في ملف الأقنعة ClickHouse من التمييز بين `NULL` و`default value` لنوع البيانات المقابل في كل صف من صفوف الجدول. وبسبب هذا الملف الإضافي، يستهلك العمود `Nullable` مساحة تخزين إضافية مقارنةً بعمود عادي مماثل.

<Note>
  يؤثر استخدام `Nullable` سلبًا في الأداء في الغالب، لذا ضع ذلك في الحسبان عند تصميم قواعد البيانات لديك.
</Note>

<div id="finding-null">
  ## العثور على NULL
</div>

يمكن العثور على قيم `NULL` في عمود باستخدام العمود الفرعي `null` من دون قراءة العمود بأكمله. ويُرجع `1` إذا كانت القيمة المقابلة هي `NULL`، و`0` في غير ذلك.

**مثال**

```sql title="Query" theme={null}
CREATE TABLE nullable (`n` Nullable(UInt32)) ENGINE = MergeTree ORDER BY tuple();

INSERT INTO nullable VALUES (1) (NULL) (2) (NULL);

SELECT n.null FROM nullable;
```

```text title="Response" theme={null}
┌─n.null─┐
│      0 │
│      1 │
│      0 │
│      1 │
└────────┘
```

<div id="usage-example">
  ## مثال على الاستخدام
</div>

```sql theme={null}
CREATE TABLE t_null(x Int8, y Nullable(Int8)) ENGINE TinyLog
```

```sql theme={null}
INSERT INTO t_null VALUES (1, NULL), (2, 3)
```

```sql theme={null}
SELECT x + y FROM t_null
```

```text theme={null}
┌─plus(x, y)─┐
│       ᴺᵁᴸᴸ │
│          5 │
└────────────┘
```
