> ## 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.

> توثيق الدوال المنطقية

# الدوال المنطقية

تنفّذ الدوال أدناه عمليات منطقية على وسيطات من أي نوع رقمي.
وتُرجع إما `0` أو `1` من النوع [`UInt8`](/ar/reference/data-types/int-uint)، أو `NULL` في بعض الحالات.

تُعتبر القيمة الصفرية في الوسيط `false`، بينما تُعتبر القيم غير الصفرية `true`.

{/*AUTOGENERATED_START*/}

<div id="and">
  ## and
</div>

أُضيف في: v1.1.0

يحسب الاقتران المنطقي لقيمتين أو أكثر.

يتحكم الإعداد [`short_circuit_function_evaluation`](/ar/reference/settings/session-settings#short_circuit_function_evaluation) في ما إذا كان يُستخدم التقييم المختصر.
إذا كان ممكّنًا، فلن يُقيَّم `val_i` إلا إذا كانت `(val_1 AND val_2 AND ... AND val_{i-1})` تساوي `true`.

على سبيل المثال، عند استخدام التقييم المختصر، لا يُرفَع استثناء قسمة على صفر عند تنفيذ الاستعلام `SELECT and(number = 2, intDiv(1, number)) FROM numbers(5)`.
يُعتبر الصفر كوسيط `false`، وتُعتبر القيم غير الصفرية `true`.

**الصيغة**

```sql theme={null}
and(val1, val2[, ...])
```

**الوسائط**

* `val1, val2[, ...]` — قائمة تضم قيمتين على الأقل. [`Nullable((U)Int*)`](/ar/reference/data-types/nullable) أو [`Nullable(Float*)`](/ar/reference/data-types/nullable)

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

تُرجع:

* `0`، إذا قُيِّمت وسيطة واحدة على الأقل إلى `false`
* `NULL`، إذا لم تُقيَّم أي وسيطة إلى `false` وكانت قيمة وسيطة واحدة على الأقل هي `NULL`
* `1`، بخلاف ذلك
  [`Nullable(UInt8)`](/ar/reference/data-types/nullable)

**أمثلة**

**الاستخدام الأساسي**

```sql title=Query theme={null}
SELECT and(0, 1, -2);
```

```response title=Response theme={null}
0
```

**مع القيمة NULL**

```sql title=Query theme={null}
SELECT and(NULL, 1, 10, -2);
```

```response title=Response theme={null}
ᴺᵁᴸᴸ
```

<div id="not">
  ## not
</div>

ظهر في: v1.1.0

يحسب النفي المنطقي لقيمة.
تُعتبر القيمة صفر `false`، وتُعتبر القيم غير الصفرية `true`.

**الصيغة**

```sql theme={null}
not(val)
```

**الوسائط**

* `val` — القيمة. [`(U)Int*`](/ar/reference/data-types/int-uint) أو [`Float*`](/ar/reference/data-types/float)

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

يعيد:

* `1`، إذا قُيِّمت `val` إلى `false`
* `0`، إذا قُيِّمت `val` إلى `true`
* `NULL`، إذا كانت `val` تساوي `NULL`.
  [`Nullable(UInt8)`](/ar/reference/data-types/nullable)

**أمثلة**

**الاستخدام الأساسي**

```sql title=Query theme={null}
SELECT NOT(1);
```

```response title=Response theme={null}
0
```

<div id="or">
  ## or
</div>

أُضيفت في: v1.1.0

تحسب عملية OR المنطقية لقيمتين أو أكثر.

يتحكم الإعداد [`short_circuit_function_evaluation`](/ar/reference/settings/session-settings#short_circuit_function_evaluation) في ما إذا كان التقييم المختصر مستخدمًا.
إذا كان مفعّلًا، فلا تُقيَّم `val_i` إلا إذا كانت `((NOT val_1) AND (NOT val_2) AND ... AND (NOT val_{i-1}))` تساوي `true`.

على سبيل المثال، عند استخدام التقييم المختصر، لا يتم طرح استثناء قسمة على صفر عند تنفيذ الاستعلام `SELECT or(number = 0, intDiv(1, number) != 0) FROM numbers(5)`.
تُعدّ القيمة صفر كوسيط `false`، وتُعدّ القيم غير الصفرية `true`.

**الصيغة**

```sql theme={null}
or(val1, val2[, ...])
```

**الوسائط**

* `val1, val2[, ...]` — قائمة تضم قيمتين على الأقل. [`Nullable((U)Int*)`](/ar/reference/data-types/nullable) أو [`Nullable(Float*)`](/ar/reference/data-types/nullable)

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

يعيد:

* `1`، إذا قُيِّمت وسيط واحد على الأقل إلى `true`
* `0`، إذا قُيِّمت جميع الوسائط إلى `false`
* `NULL`، إذا قُيِّمت جميع الوسائط إلى `false` وكان هناك وسيط واحد على الأقل يساوي `NULL`
  [`Nullable(UInt8)`](/ar/reference/data-types/nullable)

**أمثلة**

**الاستخدام الأساسي**

```sql title=Query theme={null}
SELECT or(1, 0, 0, 2, NULL);
```

```response title=Response theme={null}
1
```

**مع NULL**

```sql title=Query theme={null}
SELECT or(0, NULL);
```

```response title=Response theme={null}
ᴺᵁᴸᴸ
```

<div id="xor">
  ## xor
</div>

أُضيف في: v1.1.0

يحسب عملية «أو» الحصرية المنطقية بين قيمتين أو أكثر.
عند وجود أكثر من قيمتَي إدخال، تطبّق الدالة xor أولًا على القيمتين الأوليين، ثم تطبّق xor على الناتج مع القيمة الثالثة، وهكذا.
تُعد القيمة صفر، عند استخدامها كوسيط، `false`، بينما تُعد القيم غير الصفرية `true`.

**الصيغة**

```sql theme={null}
xor(val1, val2[, ...])
```

**الوسائط**

* `val1, val2[, ...]` — قائمة تضم قيمتين على الأقل. [`Nullable((U)Int*)`](/ar/reference/data-types/nullable) أو [`Nullable(Float*)`](/ar/reference/data-types/nullable)

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

يُرجع:

* `1`، لقيمتين: إذا قُيِّمت إحدى القيمتين إلى `false` ولم تُقيَّم الأخرى كذلك
* `0`، لقيمتين: إذا قُيِّمت كلتا القيمتين إلى `false` أو كلتاهما إلى `true`
* `NULL`، إذا كانت واحدة على الأقل من القيم المُدخلة هي `NULL`.
  [`Nullable(UInt8)`](/ar/reference/data-types/nullable)

**أمثلة**

**الاستخدام الأساسي**

```sql title=Query theme={null}
SELECT xor(0, 1, 1);
```

```response title=Response theme={null}
0
```
