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

> توثيق دوال التجزئة

# دوال التجزئة

يمكن استخدام دوال التجزئة لإعادة خلط العناصر بطريقة شبه عشوائية وحتمية.

Simhash هي دالة hash تُرجع قيم hash متقاربة للوسيطات المتقاربة (المتشابهة).

تقبل معظم دوال التجزئة أي عدد من الوسيطات، مهما كانت أنواعها.

<Note>
  قيمة hash لـ NULL هي NULL. للحصول على قيمة hash غير NULL لعمود من النوع Nullable، لفّه داخل tuple:

  ```sql theme={null}
  SELECT cityHash64(tuple(NULL))
  ```
</Note>

<Note>
  لحساب قيمة hash لكامل محتويات table، استخدم `sum(cityHash64(tuple(*)))` (أو أي دالة hash أخرى). تضمن `tuple` عدم تخطي الصفوف التي تحتوي على قيم NULL. وتضمن `sum` ألّا يؤثر ترتيب الصفوف.
</Note>

{/*AUTOGENERATED_START*/}

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

قُدِّم في: v22.10.0

يحسب سلسلة تجزئة BLAKE3 ويُرجِع مجموعة البايتات الناتجة على هيئة FixedString.
دُمجت دالة التجزئة التشفيرية هذه في ClickHouse باستخدام مكتبة BLAKE3 بلغة Rust.
تتميز هذه الدالة بسرعة كبيرة نسبيًا، إذ تقدم أداءً أسرع بنحو الضعف مقارنةً بـ SHA-2، مع توليد قيم تجزئة بالطول نفسه مثل SHA-256.
وتُرجِع دالة BLAKE3 قيمة تجزئة كمصفوفة بايتات من النوع FixedString(32).

**الصيغة**

```sql theme={null}
BLAKE3(message)
```

**المعاملات**

* `message` — سلسلة الإدخال المطلوب تجزئتها. [`String`](/ar/reference/data-types/string)

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

تُرجع تجزئة BLAKE3 بطول 32 بايت لسلسلة الإدخال، على هيئة سلسلة نصية ثابتة الطول. [`FixedString(32)`](/ar/reference/data-types/fixedstring)

**أمثلة**

**hash**

```sql title=Query theme={null}
SELECT hex(BLAKE3('ABC'))
```

```response title=Response theme={null}
┌─hex(BLAKE3('ABC'))───────────────────────────────────────────────┐
│ D1717274597CF0289694F75D96D444B992A096F1AFD8E7BBFA6EBB1D360FEDFC │
└──────────────────────────────────────────────────────────────────┘
```

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

أُضيف في: v21.11.0

يحسب تجزئة MD4 للسلسلة النصية المعطاة.

**الصيغة**

```sql theme={null}
MD4(s)
```

**الوسائط**

* `s` — سلسلة الإدخال المطلوب حساب قيمة hash لها. [`String`](/ar/reference/data-types/string)

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

تُرجع قيمة hash ‏MD4 لسلسلة الإدخال المحددة كسلسلة ثابتة الطول. [`FixedString(16)`](/ar/reference/data-types/fixedstring)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT HEX(MD4('abc'));
```

```response title=Response theme={null}
┌─hex(MD4('abc'))──────────────────┐
│ A448017AAF21D8525FC10AE87AA6729D │
└──────────────────────────────────┘
```

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

أُضيف في: v1.1.0

يحسب قيمة hash ‏MD5 للسلسلة النصية المُعطاة.

**الصيغة**

```sql theme={null}
MD5(s)
```

**الوسيطات**

* `s` — سلسلة الإدخال النصية المطلوب تجزئتها. [`String`](/ar/reference/data-types/string)

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

يعيد قيمة تجزئة MD5 لسلسلة الإدخال المحددة على هيئة سلسلة نصية ثابتة الطول. [`FixedString(16)`](/ar/reference/data-types/fixedstring)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT HEX(MD5('abc'));
```

```response title=Response theme={null}
┌─hex(MD5('abc'))──────────────────┐
│ 900150983CD24FB0D6963F7D28E17F72 │
└──────────────────────────────────┘
```

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

أُضيف في: v24.10.0

يحسب قيمة RIPEMD-160 hash للسلسلة النصية المُعطاة.

**البنية**

```sql theme={null}
RIPEMD160(s)
```

**الوسائط**

* `s` — سلسلة الإدخال المطلوب تجزئتها. [`String`](/ar/reference/data-types/string)

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

تُرجع قيمة RIPEMD160 لسلسلة الإدخال المحددة على هيئة سلسلة ثابتة الطول. [`FixedString(20)`](/ar/reference/data-types/fixedstring)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT HEX(RIPEMD160('The quick brown fox jumps over the lazy dog'));
```

```response title=Response theme={null}
┌─HEX(RIPEMD160('The quick brown fox jumps over the lazy dog'))─┐
│ 37F332F68DB77BD9D7EDD4969571AD671CF9DD3B                      │
└───────────────────────────────────────────────────────────────┘
```

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

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

تحسب قيمة تجزئة SHA1 للسلسلة النصية المُعطاة.

**الصيغة**

```sql theme={null}
SHA1(s)
```

**الوسائط**

* `s` — سلسلة الإدخال النصية المراد تجزئتها [`String`](/ar/reference/data-types/string)

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

يُرجع تجزئة SHA1 لسلسلة الإدخال النصية المحددة على شكل سلسلة نصية ثابتة الطول. [`FixedString(20)`](/ar/reference/data-types/fixedstring)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT HEX(SHA1('abc'));
```

```response title=Response theme={null}
┌─hex(SHA1('abc'))─────────────────────────┐
│ A9993E364706816ABA3E25717850C26C9CD0D89D │
└──────────────────────────────────────────┘
```

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

أُضيف في: v1.1.0

يحسب قيمة SHA224 hash للسلسلة النصية المُعطاة.

**الصيغة**

```sql theme={null}
SHA224(s)
```

**الوسائط**

* `s` — قيمة الإدخال المراد تجزئتها. [`String`](/ar/reference/data-types/string)

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

تُرجع قيمة تجزئة SHA224 لسلسلة الإدخال المعطاة في صورة سلسلة ثابتة الطول. [`FixedString(28)`](/ar/reference/data-types/fixedstring)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT HEX(SHA224('abc'));
```

```response title=Response theme={null}
┌─hex(SHA224('abc'))───────────────────────────────────────┐
│ 23097D223405D8228642A477BDA255B32AADBCE4BDA0B3F7E36C9DA7 │
└──────────────────────────────────────────────────────────┘
```

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

أُضيف في: v1.1.0

يحسب تجزئة SHA256 للسلسلة النصية المُعطاة.

**الصيغة**

```sql theme={null}
SHA256(s)
```

**المعاملات**

* `s` — سلسلة الإدخال المطلوب تجزئتها. [`String`](/ar/reference/data-types/string)

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

تعيد تجزئة SHA256 لسلسلة الإدخال المحددة على هيئة سلسلة ثابتة الطول. [`FixedString(32)`](/ar/reference/data-types/fixedstring)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT HEX(SHA256('abc'));
```

```response title=Response theme={null}
┌─hex(SHA256('abc'))───────────────────────────────────────────────┐
│ BA7816BF8F01CFEA414140DE5DAE2223B00361A396177A9CB410FF61F20015AD │
└──────────────────────────────────────────────────────────────────┘
```

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

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

تحسب قيمة تجزئة SHA384 للسلسلة النصية المحددة.

**البنية**

```sql theme={null}
SHA384(s)
```

**الوسائط**

* `s` — سلسلة الإدخال المطلوب تجزئتها. [`String`](/ar/reference/data-types/string)

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

يعيد قيمة تجزئة SHA384 لسلسلة الإدخال المحددة على هيئة سلسلة ثابتة الطول. [`FixedString(48)`](/ar/reference/data-types/fixedstring)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT HEX(SHA384('abc'));
```

```response title=Response theme={null}
┌─hex(SHA384('abc'))───────────────────────────────────────────────────────────────────────────────┐
│ CB00753F45A35E8BB5A03D699AC65007272C32AB0EDED1631A8B605A43FF5BED8086072BA1E7CC2358BAECA134C825A7 │
└──────────────────────────────────────────────────────────────────────────────────────────────────┘
```

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

أُضيف في: v1.1.0

يحسب تجزئة SHA512 للسلسلة النصية المُعطاة.

**الصيغة**

```sql theme={null}
SHA512(s)
```

**المعاملات**

* `s` — سلسلة الإدخال المطلوب تطبيق دالة التجزئة عليها [`String`](/ar/reference/data-types/string)

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

تعيد دالة SHA512 قيمة تجزئة SHA512 لسلسلة الإدخال المحددة على شكل سلسلة نصية ثابتة الطول. [`FixedString(64)`](/ar/reference/data-types/fixedstring)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT HEX(SHA512('abc'));
```

```response title=Response theme={null}
┌─hex(SHA512('abc'))───────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ DDAF35A193617ABACC417349AE20413112E6FA4E89A97EA20A9EEEE64B55D39A2192992A274FC1A836BA3C23A3FEEBBD454D4423643CE80E2A9AC94FA54CA49F │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
```

<div id="SHA512_256">
  ## SHA512\_256
</div>

أُضيف في: v1.1.0

يحسب قيمة hash ‏SHA512\_256 للسلسلة النصية المُعطاة.

**البنية**

```sql theme={null}
SHA512_256(s)
```

**الوسيطات**

* `s` — سلسلة الإدخال المطلوب تجزئتها. [`String`](/ar/reference/data-types/string)

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

تُرجع دالة SHA512\_256 قيمة تجزئة سلسلة الإدخال المحددة على هيئة سلسلة ذات طول ثابت. [`FixedString(32)`](/ar/reference/data-types/fixedstring)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT HEX(SHA512_256('abc'));
```

```response title=Response theme={null}
┌─hex(SHA512_256('abc'))───────────────────────────────────────────┐
│ 53048E2681941EF99B2E29B76B4C7DABE4C2D0C634FC6D46E0E2F13107E7AF23 │
└──────────────────────────────────────────────────────────────────┘
```

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

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

دالة hash سريعة وذات جودة مقبولة وغير مخصّصة للتشفير، تُحسب لسلسلة نصية مُستخرجة من URL باستخدام نوع من التطبيع.

لهذه الدالة hash وضعان:

| الوضع             | الوصف                                                                                                                                                                                     |
| ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `URLHash(url)`    | تحسب قيمة hash لسلسلة نصية بعد إزالة أحد الرموز الختامية `/` أو `?` أو `#` من النهاية، إذا كان موجودًا.                                                                                   |
| `URLHash(url, N)` | تحسب قيمة hash لسلسلة نصية حتى المستوى N في التسلسل الهرمي لـ URL، بعد إزالة أحد الرموز الختامية `/` أو `?` أو `#` من النهاية، إذا كان موجودًا. المستويات هي نفسها كما في `URLHierarchy`. |

**الصياغة**

```sql theme={null}
URLHash(url[, N])
```

**المعاملات**

* `url` — سلسلة URL المراد تجزئتها. [`String`](/ar/reference/data-types/string)
* `N` — اختياري. المستوى في البنية الهرمية لـ URL. [`(U)Int*`](/ar/reference/data-types/int-uint)

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

يعيد قيمة التجزئة المحسوبة لـ `url`. [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT URLHash('https://www.clickhouse.com')
```

```response title=Response theme={null}
┌─URLHash('htt⋯house.com')─┐
│     13614512636072854701 │
└──────────────────────────┘
```

**قيمة تجزئة URL عند المستوى المحدد**

```sql title=Query theme={null}
SELECT URLHash('https://www.clickhouse.com/docs', 0);
SELECT URLHash('https://www.clickhouse.com/docs', 1);
```

```response title=Response theme={null}
-- hash of https://www.clickhouse.com
┌─URLHash('htt⋯m/docs', 0)─┐
│     13614512636072854701 │
└──────────────────────────┘
-- hash of https://www.clickhouse.com/docs
┌─URLHash('htt⋯m/docs', 1)─┐
│     13167253331440520598 │
└──────────────────────────┘
```

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

أُضيف في: v1.1.0

ينتج قيمة تجزئة [CityHash](https://github.com/google/cityhash) بطول 64 بت.

هذه دالة تجزئة سريعة وغير مشفّرة.
تستخدم خوارزمية CityHash مع معاملات السلاسل النصية، وتستخدم دالة تجزئة سريعة وغير مشفّرة خاصة بالتنفيذ مع المعاملات ذات أنواع البيانات الأخرى.
تستخدم الدالة combinator الخاص بـ CityHash للحصول على النتائج النهائية.

<Info>
  غيّرت Google خوارزمية CityHash بعد إضافتها إلى ClickHouse.
  وبعبارة أخرى، ينتج cityHash64 في ClickHouse وCityHash الأصلي من Google الآن نتائج مختلفة.
  يتوافق cityHash64 في ClickHouse مع CityHash v1.0.2.
</Info>

<Note>
  قد تتساوى قيم التجزئة المحسوبة لقيم الإدخال نفسها رغم اختلاف أنواع المعاملات.
  وينطبق ذلك، على سبيل المثال، على أنواع الأعداد الصحيحة ذات الأحجام المختلفة، و`Tuple` المسمّاة وغير المسمّاة التي تحتوي على البيانات نفسها، و`Map` ونوع `Array(Tuple(key, value))` المقابل الذي يحتوي على البيانات نفسها.
</Note>

**البنية**

```sql theme={null}
cityHash64(arg1[, arg2, ...])
```

**الوسائط**

* `arg1[, arg2, ...]` — عدد متغيّر من وسائط الإدخال المطلوب حساب قيمة التجزئة لها. [`Any`](/ar/reference/data-types/index)

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

تعيد قيمة التجزئة المحسوبة لوسائط الإدخال. [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستدعاء**

```sql title=Query theme={null}
SELECT cityHash64(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23:00:00')) AS CityHash, toTypeName(CityHash) AS type;
```

```response title=Response theme={null}
┌─────────────CityHash─┬─type───┐
│ 12072650598913549138 │ UInt64 │
└──────────────────────┴────────┘
```

**حساب المجموع الاختباري للجدول بالكامل مع مراعاة ترتيب الصفوف**

```sql title=Query theme={null}
CREATE TABLE users (
    id UInt32,
    name String,
    age UInt8,
    city String
)
ENGINE = MergeTree
ORDER BY tuple();

INSERT INTO users VALUES
(1, 'Alice', 25, 'New York'),
(2, 'Bob', 30, 'London'),
(3, 'Charlie', 35, 'Tokyo');

SELECT groupBitXor(cityHash64(*)) FROM users;
```

```response title=Response theme={null}
┌─groupBitXor(⋯age, city))─┐
│     11639977218258521182 │
└──────────────────────────┘
```

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

أُضيف في: v20.12.0

يُنتج قيمة [FarmHash](https://github.com/google/farmhash) من 64 بت باستخدام الطريقة `Fingerprint64`.

<Tip>
  يُفضَّل `farmFingerprint64` للحصول على قيمة ثابتة وقابلة للنقل بدلًا من [`farmHash64`](#farmHash64).
</Tip>

<Note>
  قد تتطابق قيم hash المحسوبة لقيم الإدخال نفسها رغم اختلاف أنواع الوسائط.
  وينطبق ذلك، على سبيل المثال، على أنواع الأعداد الصحيحة ذات الأحجام المختلفة، و`Tuple` المسمّاة وغير المسمّاة التي تحتوي على البيانات نفسها، و`Map` ونوع `Array(Tuple(key, value))` المقابل الذي يحتوي على البيانات نفسها.
</Note>

**الصيغة**

```sql theme={null}
farmFingerprint64(arg1[, arg2, ...])
```

**الوسيطات**

* `arg1[, arg2, ...]` — عدد متغيّر من وسيطات الإدخال المطلوب حساب قيمة التجزئة لها. [`Any`](/ar/reference/data-types/index)

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

تُعيد قيمة التجزئة المحسوبة لوسيطات الإدخال. [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT farmFingerprint64(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23:00:00')) AS FarmFingerprint, toTypeName(FarmFingerprint) AS type;
```

```response title=Response theme={null}
┌─────FarmFingerprint─┬─type───┐
│ 5752020380710916328 │ UInt64 │
└─────────────────────┴────────┘
```

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

أُضيف في: v1.1.0

ينتج قيمة [FarmHash](https://github.com/google/farmhash) بطول 64 بت باستخدام الطريقة `Hash64`.

<Tip>
  يُفضَّل استخدام [`farmFingerprint64`](#farmFingerprint64) للحصول على قيمة مستقرة وقابلة للنقل.
</Tip>

<Note>
  قد تتطابق قيم التجزئة المحسوبة لقيم الإدخال نفسها حتى مع اختلاف أنواع الوسيطات.
  وينطبق ذلك، على سبيل المثال، على أنواع الأعداد الصحيحة ذات الأحجام المختلفة، و`Tuple` المسمّاة وغير المسمّاة التي تحتوي على البيانات نفسها، و`Map` ونوع `Array(Tuple(key, value))` المقابل الذي يحتوي على البيانات نفسها.
</Note>

**البنية**

```sql theme={null}
farmHash64(arg1[, arg2, ...])
```

**الوسيطات**

* `arg1[, arg2, ...]` — عدد متغيّر من وسيطات الإدخال المراد حساب قيمة التجزئة لها. [`Any`](/ar/reference/data-types/index)

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

تُرجِع قيمة التجزئة المحسوبة لوسيطات الإدخال. [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT farmHash64(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23:00:00')) AS FarmHash, toTypeName(FarmHash) AS type;
```

```response title=Response theme={null}
┌─────────────FarmHash─┬─type───┐
│ 18125596431186471178 │ UInt64 │
└──────────────────────┴────────┘
```

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

أُضيف في: v20.1.0

يحسب تجزئة [MurmurHash2](https://github.com/aappleby/smhasher)‎‏ ذات 64 بت لقيمة الإدخال باستخدام البذرة نفسها المستخدمة في [GCC](https://github.com/gcc-mirror/gcc/blob/41d6b10e96a1de98e90a7c0378437c3255814b16/libstdc%2B%2B-v3/include/bits/functional_hash.h#L191).

وهو قابل للنقل بين إصدارات البناء الخاصة بـ Clang وGCC.

**الصياغة**

```sql theme={null}
gccMurmurHash(arg1[, arg2, ...])
```

**المعاملات**

* `arg1[, arg2, ...]` — عدد متغير من المعاملات المطلوب حساب قيمة التجزئة لها. [`Any`](/ar/reference/data-types/index)

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

تعيد قيمة التجزئة المحسوبة لمعاملات الإدخال. [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT
    gccMurmurHash(1, 2, 3) AS res1,
    gccMurmurHash(('a', [1, 2, 3], 4, (4, ['foo', 'bar'], 1, (1, 2)))) AS res2
```

```response title=Response theme={null}
┌─────────────────res1─┬────────────────res2─┐
│ 12384823029245979431 │ 1188926775431157506 │
└──────────────────────┴─────────────────────┘
```

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

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

تقوم [بإعادة تفسير](/ar/reference/functions/regular-functions/type-conversion-functions#reinterpretAsString) جميع معلمات الإدخال
على أنها سلاسل نصية، وتحسب قيمة هاش MD5 لكل منها. ثم تدمج قيم الهاش، وتأخذ أول 8 بايت من هاش
السلسلة الناتجة، وتعيد تفسيرها على أنها [UInt64](/ar/reference/data-types/int-uint) بترتيب البايتات big-endian. هذه الدالة
بطيئة نسبيًا (5 ملايين سلسلة قصيرة في الثانية لكل نواة معالج).

يُفضَّل استخدام الدالة [`sipHash64`](#sipHash64) بدلًا منها.

تأخذ الدالة عددًا متغيرًا من معلمات الإدخال.
يمكن أن تكون الوسائط من أي من أنواع البيانات المدعومة.
بالنسبة إلى بعض أنواع البيانات، قد تتطابق القيمة المحسوبة لدالة الهاش للقيم نفسها حتى إذا اختلفت أنواع الوسائط (الأعداد الصحيحة ذات الأحجام المختلفة، وTuple المسمّاة وغير المسمّاة التي تحتوي على البيانات نفسها، وMap ونوع Array(Tuple(key, value)) المقابل الذي يحتوي على البيانات نفسها).

**الصياغة**

```sql theme={null}
halfMD5(arg1[, arg2, ..., argN])
```

**الوسائط**

* `arg1[, arg2, ..., argN]` — عدد متغيّر من الوسائط المطلوب حساب قيمة التجزئة لها. [`Any`](/ar/reference/data-types/index)

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

تعيد نصف قيمة تجزئة MD5 المحسوبة لمعاملات الإدخال المحددة، وتُعاد على هيئة `UInt64` بترتيب البايتات big-endian. [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT HEX(halfMD5('abc', 'cde', 'fgh'));
```

```response title=Response theme={null}
┌─hex(halfMD5('abc', 'cde', 'fgh'))─┐
│ 2C9506B7374CFAF4                  │
└───────────────────────────────────┘
```

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

قُدِّم في: v20.1.0

يحسب قيمة "HiveHash" من سلسلة نصية.
وهو ببساطة [`JavaHash`](#javaHash) مع تصفير بتات الإشارة.
تُستخدم هذه الدالة في [Apache Hive](https://en.wikipedia.org/wiki/Apache_Hive) للإصدارات السابقة لـ 3.0.

<Warning>
  دالة hash هذه منخفضة الأداء.
  استخدمها فقط إذا كانت هذه الخوارزمية مستخدمة بالفعل في نظام آخر وكنت بحاجة إلى حساب النتيجة نفسها.
</Warning>

**الصياغة**

```sql theme={null}
hiveHash(arg)
```

**الوسائط**

* `arg` — سلسلة الإدخال المراد حساب hash لها. [`String`](/ar/reference/data-types/string)

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

تُرجع قيمة "hive hash" المحسوبة لسلسلة الإدخال. [`Int32`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT hiveHash('Hello, world!');
```

```response title=Response theme={null}
┌─hiveHash('Hello, world!')─┐
│                 267439093 │
└───────────────────────────┘
```

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

أُضيفت في: v25.5.0

ينفّذ منطق [تحويل التجزئة](https://iceberg.apache.org/spec/#appendix-b-32-bit-hash-requirements) في Iceberg

**البنية**

```sql theme={null}
icebergHash(value)
```

**الوسائط**

* `value` — القيمة المصدر المطلوب حساب تجزئتها من النوع [`Integer`](/ar/reference/data-types/int-uint) أو [`Bool`](/ar/reference/data-types/boolean) أو [`Decimal`](/ar/reference/data-types/decimal) أو [`Float*`](/ar/reference/data-types/float) أو [`String`](/ar/reference/data-types/string) أو [`FixedString`](/ar/reference/data-types/fixedstring) أو [`UUID`](/ar/reference/data-types/uuid) أو [`Date`](/ar/reference/data-types/date) أو [`Time`](/ar/reference/data-types/time) أو [`DateTime`](/ar/reference/data-types/datetime)

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

تعيد قيمة تجزئة Murmur3 بطول 32 بت، بإصدار x86، وببذرة قدرها 0 من النوع [`Int32`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال**

```sql title=Query theme={null}
SELECT icebergHash(1.0 :: Float32)
```

```response title=Response theme={null}
-142385009
```

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

أُضيف في: v1.1.0

يحسب قيمة hash من 32 بتًا لعدد صحيح.

دالة الـ hash سريعة نسبيًا، لكنها ليست دالة hash تشفيرية.

**البنية**

```sql theme={null}
intHash32(arg)
```

**الوسائط**

* `arg` — عدد صحيح يُراد تجزئته. [`(U)Int*`](/ar/reference/data-types/int-uint)

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

يعيد رمز التجزئة المحسوب بطول 32 بت للعدد الصحيح المُدخل [`UInt32`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT intHash32(42);
```

```response title=Response theme={null}
┌─intHash32(42)─┐
│    1228623923 │
└───────────────┘
```

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

أُضيف في: v1.1.0

يحسب قيمة hash من نوع 64-bit لعدد صحيح.

تُعد دالة hash هذه سريعة نسبيًا (وأسرع حتى من [`intHash32`](#intHash32))، لكنها ليست دالة hash تشفيرية.

**الصياغة**

```sql theme={null}
intHash64(int)
```

**المعاملات**

* `int` — عدد صحيح لإجراء التجزئة عليه. [`(U)Int*`](/ar/reference/data-types/int-uint)

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

قيمة تجزئة بطول 64 بت. [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT intHash64(42);
```

```response title=Response theme={null}
┌────────intHash64(42)─┐
│ 11490350930367293593 │
└──────────────────────┘
```

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

أُضيف في: v20.1.0

يحسب قيمة JavaHash لـ:

* [string](http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/478a4add975b/src/share/classes/java/lang/String.java#l1452),
* [Byte](https://hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/478a4add975b/src/share/classes/java/lang/Byte.java#l405),
* [Short](https://hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/478a4add975b/src/share/classes/java/lang/Short.java#l410),
* [Integer](https://hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/478a4add975b/src/share/classes/java/lang/Integer.java#l959),
* [Long](https://hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/478a4add975b/src/share/classes/java/lang/Long.java#l1060).

<Warning>
  دالة hash هذه ضعيفة الأداء.
  استخدمها فقط إذا كانت هذه الخوارزمية مستخدمة بالفعل في نظام آخر وكنت بحاجة إلى حساب النتيجة نفسها.
</Warning>

<Note>
  لا تدعم Java سوى حساب hash للأعداد الصحيحة الموقعة،
  لذا إذا أردت حساب hash للأعداد الصحيحة غير الموقعة، فيجب تحويلها إلى أنواع ClickHouse الموقعة المناسبة.
</Note>

**الصياغة**

```sql theme={null}
javaHash(arg)
```

**الوسيطات**

* `arg` — قيمة الإدخال المطلوب تجزئتها. [`Any`](/ar/reference/data-types/index)

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

يعيد قيمة التجزئة المحسوبة لـ `arg` [`Int32`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال استخدام 1**

```sql title=Query theme={null}
SELECT javaHash(toInt32(123));
```

```response title=Response theme={null}
┌─javaHash(toInt32(123))─┐
│               123      │
└────────────────────────┘
```

**مثال استخدام 2**

```sql title=Query theme={null}
SELECT javaHash('Hello, world!');
```

```response title=Response theme={null}
┌─javaHash('Hello, world!')─┐
│               -1880044555 │
└───────────────────────────┘
```

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

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

يحسب [JavaHash](http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/478a4add975b/src/share/classes/java/lang/String.java#l1452) من سلسلة نصية، بافتراض أنها تتضمن بايتات تمثل سلسلة نصية بترميز UTF-16LE.

**الصيغة**

```sql theme={null}
javaHashUTF16LE(arg)
```

**الوسائط**

* `arg` — سلسلة بترميز UTF-16LE. [`String`](/ar/reference/data-types/string)

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

تعيد قيمة التجزئة المحسوبة للسلسلة المرمّزة بترميز UTF-16LE. [`Int32`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال استخدام**

```sql title=Query theme={null}
SELECT javaHashUTF16LE(convertCharset('test', 'utf-8', 'utf-16le'));
```

```response title=Response theme={null}
┌─javaHashUTF16LE(convertCharset('test', 'utf-8', 'utf-16le'))─┐
│                                                      3556498 │
└──────────────────────────────────────────────────────────────┘
```

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

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

يحسب [التجزئة المتسقة بالقفز](https://arxiv.org/pdf/1406.2294.pdf) لعدد صحيح.

**الصيغة**

```sql theme={null}
jumpConsistentHash(key, buckets)
```

**الوسيطات**

* `key` — مفتاح الإدخال. [`UInt64`](/ar/reference/data-types/int-uint)
* `buckets` — عدد الخانات. [`Int32`](/ar/reference/data-types/int-uint)

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

يعيد قيمة التجزئة المحسوبة. [`Int32`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT jumpConsistentHash(256, 4)
```

```response title=Response theme={null}
┌─jumpConsistentHash(256, 4)─┐
│                          3 │
└────────────────────────────┘
```

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

أُضيف في: v23.4.0

يحسب تجزئة [MurmurHash2](https://github.com/aappleby/smhasher)‏ ذات 32 بت لقيمة الإدخال باستخدام نفس `seed` المستخدم في [Kafka](https://github.com/apache/kafka/blob/461c5cfe056db0951d9b74f5adc45973670404d7/clients/src/main/java/org/apache/kafka/common/utils/Utils.java#L482)، ومن دون أعلى بت، ليكون متوافقًا مع [Default Partitioner](https://github.com/apache/kafka/blob/139f7709bd3f5926901a21e55043388728ccca78/clients/src/main/java/org/apache/kafka/clients/producer/internals/BuiltInPartitioner.java#L328).

**الصيغة**

```sql theme={null}
kafkaMurmurHash(arg1[, arg2, ...])
```

**الوسيطات**

* `arg1[, arg2, ...]` — عدد متغيّر من المعاملات المطلوب حساب قيمة التجزئة لها. [`Any`](/ar/reference/data-types/index)

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

تُرجع قيمة التجزئة المحسوبة لمعاملات الإدخال. [`UInt32`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT
    kafkaMurmurHash('foobar') AS res1,
    kafkaMurmurHash(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23:00:00')) AS res2
```

```response title=Response theme={null}
┌───────res1─┬─────res2─┐
│ 1357151166 │ 85479775 │
└────────────┴──────────┘
```

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

أُضيف في: v25.4.0

يحسب التجزئة التشفيرية Keccak-256 للسلسلة النصية المعطاة.
تُستخدم دالة التجزئة هذه على نطاق واسع في تطبيقات البلوك تشين، وخصوصًا Ethereum.

**الصياغة**

```sql theme={null}
keccak256(message)
```

**الوسائط**

* `message` — سلسلة الإدخال المطلوب حساب hash لها. [`String`](/ar/reference/data-types/string)

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

تُرجع قيمة hash ‏Keccak-256 بطول 32 بايت لسلسلة الإدخال على هيئة سلسلة ثابتة الطول. [`FixedString(32)`](/ar/reference/data-types/fixedstring)

**أمثلة**

**مثال استخدام**

```sql title=Query theme={null}
SELECT hex(keccak256('hello'))
```

```response title=Response theme={null}
┌─hex(keccak256('hello'))──────────────────────────────────────────┐
│ 1C8AFF950685C2ED4BC3174F3472287B56D9517B9C948127319A09A7A36DEAC8 │
└──────────────────────────────────────────────────────────────────┘
```

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

أُضيف في: v22.6.0

خوارزمية تجزئة متسقة بزمن ومساحة O(1) طوّرها Konstantin 'Kostik' Oblakov.
تكون فعّالة فقط عندما يكون `n <= 32768`.

**الصياغة**

```sql theme={null}
kostikConsistentHash(input, n)
```

**الأسماء البديلة**: `yandexConsistentHash`

**المعاملات**

* `input` — مفتاح من نوع عدد صحيح. [`UInt64`](/ar/reference/data-types/int-uint)
* `n` — عدد الحاويات. [`UInt16`](/ar/reference/data-types/int-uint)

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

يعيد قيمة التجزئة المحسوبة. [`UInt16`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT kostikConsistentHash(16045690984833335023, 2);
```

```response title=Response theme={null}
┌─kostikConsistentHash(16045690984833335023, 2)─┐
│                                             1 │
└───────────────────────────────────────────────┘
```

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

أُضيف في: v1.1.0

ينتج قيمة hash‏ من [MetroHash](http://www.jandrewrogers.com/2015/05/27/metrohash/) بطول 64 بت.

<Note>
  قد تتطابق قيم hash المحسوبة لقيم الإدخال نفسها حتى مع اختلاف أنواع argument.
  وينطبق ذلك، على سبيل المثال، على أنواع الأعداد الصحيحة ذات الأحجام المختلفة، و`Tuple` المسمّى وغير المسمّى الذي يحتوي على البيانات نفسها، و`Map` والنوع المناظر له `Array(Tuple(key, value))` الذي يحتوي على البيانات نفسها.
</Note>

**البنية**

```sql theme={null}
metroHash64(arg1[, arg2, ...])
```

**الوسيطات**

* `arg1[, arg2, ...]` — عدد متغير من وسيطات الإدخال المراد حساب قيمة التجزئة لها. [`Any`](/ar/reference/data-types/index)

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

يعيد قيمة التجزئة المحسوبة لوسيطات الإدخال. [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT metroHash64(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23:00:00')) AS MetroHash, toTypeName(MetroHash) AS type;
```

```response title=Response theme={null}
┌────────────MetroHash─┬─type───┐
│ 14235658766382344533 │ UInt64 │
└──────────────────────┴────────┘
```

<div id="murmurHash2_32">
  ## murmurHash2\_32
</div>

أُضيف في: v18.5.0

يحسب قيمة تجزئة [MurmurHash2](https://github.com/aappleby/smhasher) لقيمة الإدخال.

<Note>
  قد تتطابق قيم التجزئة المحسوبة لقيم الإدخال نفسها رغم اختلاف أنواع المعاملات.
  ينطبق ذلك، على سبيل المثال، على أنواع الأعداد الصحيحة ذات الأحجام المختلفة، و`Tuple` المسمّاة وغير المسمّاة التي تحتوي على البيانات نفسها، و`Map` والنوع المقابل `Array(Tuple(key, value))` الذي يحتوي على البيانات نفسها.
</Note>

**البنية**

```sql theme={null}
murmurHash2_32(arg1[, arg2, ...])
```

**الوسيطات**

* `arg1[, arg2, ...]` — عدد متغيّر من وسيطات الإدخال المطلوب حساب قيمة التجزئة لها. [`Any`](/ar/reference/data-types/index)

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

تعيد قيمة التجزئة المحسوبة لوسيطات الإدخال. [`UInt32`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT murmurHash2_32(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23:00:00')) AS MurmurHash2, toTypeName(MurmurHash2) AS type;
```

```response title=Response theme={null}
┌─MurmurHash2─┬─type───┐
│  3681770635 │ UInt32 │
└─────────────┴────────┘
```

<div id="murmurHash2_64">
  ## murmurHash2\_64
</div>

أُضيف في: v18.10.0

يحسب قيمة التجزئة [MurmurHash2](https://github.com/aappleby/smhasher) لقيمة الإدخال.

<Note>
  قد تتطابق قيم التجزئة المحسوبة لقيم الإدخال نفسها رغم اختلاف أنواع الوسيطات.
  وينطبق ذلك، على سبيل المثال، على أنواع الأعداد الصحيحة ذات الأحجام المختلفة، و`Tuple` المسمّى وغير المسمّى التي تحتوي على البيانات نفسها، و`Map` ونوع `Array(Tuple(key, value))` المقابل له الذي يحتوي على البيانات نفسها.
</Note>

**البنية**

```sql theme={null}
murmurHash2_64(arg1[, arg2, ...])
```

**الوسيطات**

* `arg1[, arg2, ...]` — عدد متغير من وسيطات الإدخال التي تُحسب لها قيمة التجزئة. [`Any`](/ar/reference/data-types/index)

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

تعيد قيمة التجزئة المحسوبة لوسيطات الإدخال. [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT murmurHash2_64(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23:00:00')) AS MurmurHash2, toTypeName(MurmurHash2) AS type;
```

```response title=Response theme={null}
┌──────────MurmurHash2─┬─type───┐
│ 11832096901709403633 │ UInt64 │
└──────────────────────┴────────┘
```

<div id="murmurHash3_128">
  ## murmurHash3\_128
</div>

أُضيف في: v18.10.0

يحسب قيمة تجزئة [MurmurHash3](https://github.com/aappleby/smhasher) بطول 128 بت لقيمة الإدخال.

**الصيغة**

```sql theme={null}
murmurHash3_128(arg1[, arg2, ...])
```

**الوسائط**

* `arg1[, arg2, ...]` — عدد متغيّر من وسائط الإدخال المطلوب حساب قيمة التجزئة لها. [`Any`](/ar/reference/data-types/index)

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

تُعيد قيمة تجزئة `MurmurHash3` المحسوبة بطول 128 بت لوسائط الإدخال. [`FixedString(16)`](/ar/reference/data-types/fixedstring)

**أمثلة**

**مثال للاستخدام**

```sql title=Query theme={null}
SELECT hex(murmurHash3_128('foo', 'foo', 'foo'));
```

```response title=Response theme={null}
┌─hex(murmurHash3_128('foo', 'foo', 'foo'))─┐
│ F8F7AD9B6CD4CF117A71E277E2EC2931          │
└───────────────────────────────────────────┘
```

<div id="murmurHash3_32">
  ## murmurHash3\_32
</div>

تم تقديمه في: v18.10.0

ينتج قيمة تجزئة [MurmurHash3](https://github.com/aappleby/smhasher).

<Note>
  قد تتطابق قيم التجزئة المحسوبة لقيم الإدخال نفسها مع أنواع وسيطات مختلفة.
  وينطبق ذلك، على سبيل المثال، على أنواع الأعداد الصحيحة ذات الأحجام المختلفة، و`Tuple` المسمّاة وغير المسمّاة التي تحتوي على البيانات نفسها، و`Map` ونوع `Array(Tuple(key, value))` المقابل الذي يحتوي على البيانات نفسها.
</Note>

**البنية**

```sql theme={null}
murmurHash3_32(arg1[, arg2, ...])
```

**الوسيطات**

* `arg1[, arg2, ...]` — عدد متغيّر من وسائط الإدخال التي تُحسب لها قيمة التجزئة. [`Any`](/ar/reference/data-types/index)

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

تعيد قيمة التجزئة المحسوبة لوسائط الإدخال. [`UInt32`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT murmurHash3_32(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23:00:00')) AS MurmurHash3, toTypeName(MurmurHash3) AS type;
```

```response title=Response theme={null}
┌─MurmurHash3─┬─type───┐
│     2152717 │ UInt32 │
└─────────────┴────────┘
```

<div id="murmurHash3_64">
  ## murmurHash3\_64
</div>

أُضيفت في: v18.10.0

تحسب تجزئة [MurmurHash3](https://github.com/aappleby/smhasher) لقيمة الإدخال.

<Note>
  قد تتساوى قيم التجزئة المحسوبة لقيم الإدخال نفسها لأنواع وسائط مختلفة.
  يؤثر هذا، على سبيل المثال، في أنواع الأعداد الصحيحة ذات الأحجام المختلفة، و`Tuple` المسمّى وغير المسمّى التي تحتوي على البيانات نفسها، و`Map` ونوع `Array(Tuple(key, value))` المقابل الذي يحتوي على البيانات نفسها.
</Note>

**البنية**

```sql theme={null}
murmurHash3_64(arg1[, arg2, ...])
```

**الوسيطات**

* `arg1[, arg2, ...]` — عدد متغير من وسيطات الإدخال التي تُحسب لها قيمة التجزئة. [`Any`](/ar/reference/data-types/index)

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

تُرجع قيمة التجزئة المحسوبة لوسيطات الإدخال. [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT murmurHash3_64(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23:00:00')) AS MurmurHash3, toTypeName(MurmurHash3) AS type;
```

```response title=Response theme={null}
┌──────────MurmurHash3─┬─type───┐
│ 11832096901709403633 │ UInt64 │
└──────────────────────┴────────┘
```

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

قُدِّمت في: v21.1.0

تُقسِّم سلسلة ASCII إلى مقاطع n-gram تتكوّن من `ngramsize` رموز، وتحسب قيم hash لكل n-gram، ثم تُرجع tuple يحتوي على هذه القيم.
وتستخدم `hashnum` من أصغر قيم hash لحساب أقل hash، و`hashnum` من أكبر قيم hash لحساب أكبر hash.
وهي تراعي حالة الأحرف.

يمكن استخدامها لاكتشاف السلاسل شبه المتطابقة باستخدام [`tupleHammingDistance`](/ar/reference/functions/regular-functions/tuple-functions#tupleHammingDistance).
وبالنسبة إلى سلسلتين، إذا كانت قيم hash المُرجعة متطابقة في كلتيهما، فإن هاتين السلسلتين متطابقتان.

**الصياغة**

```sql theme={null}
ngramMinHash(string[, ngramsize, hashnum])
```

**الوسيطات**

* `string` — السلسلة النصية التي تُحسب لها قيمة `hash`. [`String`](/ar/reference/data-types/string)
* `ngramsize` — اختياري. حجم `n-gram`، وأي قيمة من `1` إلى `25`. القيمة الافتراضية هي `3`. [`UInt8`](/ar/reference/data-types/int-uint)
* `hashnum` — اختياري. عدد قيم `hash` الدنيا والعليا المستخدمة لحساب النتيجة، وأي قيمة من `1` إلى `25`. القيمة الافتراضية هي `6`. [`UInt8`](/ar/reference/data-types/int-uint)

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

يُرجع قيمة `Tuple` تحتوي على قيمتي `hash` — الصغرى والكبرى. [`Tuple`](/ar/reference/data-types/tuple)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT ngramMinHash('ClickHouse') AS Tuple;
```

```response title=Response theme={null}
┌─Tuple──────────────────────────────────────┐
│ (18333312859352735453,9054248444481805918) │
└────────────────────────────────────────────┘
```

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

طُرح في: v21.1.0

يقسّم سلسلة ASCII إلى n-grams من `ngramsize` رمزًا، ويُرجع n-grams ذات أصغر وأكبر قيم hash، كما تحسبها الدالة [`ngramMinHash`](#ngramMinHash) للمدخل نفسه.
وهي حساسة لحالة الأحرف.

**البنية**

```sql theme={null}
ngramMinHashArg(string[, ngramsize, hashnum])
```

**الوسائط**

* `string` — السلسلة المراد حساب قيمة التجزئة لها. [`String`](/ar/reference/data-types/string)
* `ngramsize` — اختياري. حجم `n-gram`، أي عدد من `1` إلى `25`. القيمة الافتراضية هي `3`. [`UInt8`](/ar/reference/data-types/int-uint)
* `hashnum` — اختياري. عدد قيم التجزئة الدنيا والعليا المستخدمة لحساب النتيجة، أي عدد من `1` إلى `25`. القيمة الافتراضية هي `6`. [`UInt8`](/ar/reference/data-types/int-uint)

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

يُرجع tuple يحتوي على tupleين، يحتوي كلٌّ منهما على `hashnum` من `n-grams`. [`Tuple(String)`](/ar/reference/data-types/tuple)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT ngramMinHashArg('ClickHouse') AS Tuple;
```

```response title=Response theme={null}
┌─Tuple─────────────────────────────────────────────────────────────────────────┐
│ (('ous','ick','lic','Hou','kHo','use'),('Hou','lic','ick','ous','ckH','Cli')) │
└───────────────────────────────────────────────────────────────────────────────┘
```

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

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

تقسم سلسلة ASCII إلى n-grams من `ngramsize` رموز، وتُرجِع قيم n-grams ذات أصغر وأكبر hash كما تحسبها الدالة [`ngramMinHashCaseInsensitive`](#ngramMinHashCaseInsensitive) للمدخل نفسه.
وهي غير حساسة لحالة الأحرف.

**البنية**

```sql theme={null}
ngramMinHashArgCaseInsensitive(string[, ngramsize, hashnum])
```

**المعاملات**

* `string` — سلسلة نصية يُراد حساب قيمة `hash` لها. [`String`](/ar/reference/data-types/string)
* `ngramsize` — اختياري. حجم `n-gram`، أي عدد من `1` إلى `25`. القيمة الافتراضية هي `3`. [`UInt8`](/ar/reference/data-types/int-uint)
* `hashnum` — اختياري. عدد قيم `hash` الصغرى والكبرى المستخدمة لحساب النتيجة، أي عدد من `1` إلى `25`. القيمة الافتراضية هي `6`. [`UInt8`](/ar/reference/data-types/int-uint)

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

تعيد قيمة من النوع `Tuple` تحتوي على قيمتين من النوع `Tuple`، في كلٍّ منهما `hashnum` من `n-grams`. [`Tuple(Tuple(String))`](/ar/reference/data-types/tuple)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT ngramMinHashArgCaseInsensitive('ClickHouse') AS Tuple;
```

```response title=Response theme={null}
┌─Tuple─────────────────────────────────────────────────────────────────────────┐
│ (('ous','ick','lic','kHo','use','Cli'),('kHo','lic','ick','ous','ckH','Hou')) │
└───────────────────────────────────────────────────────────────────────────────┘
```

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

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

تُقسِّم سلسلة UTF-8 إلى مقاطع n-gram من `ngramsize` رمزًا، وتُرجع مقاطع n-gram ذات قيم hash الصغرى والكبرى، كما تحسبها الدالة ngramMinHashCaseInsensitiveUTF8 باستخدام المُدخل نفسه.
وهي غير حساسة لحالة الأحرف.

**الصيغة**

```sql theme={null}
ngramMinHashArgCaseInsensitiveUTF8(string[, ngramsize, hashnum])
```

**المعاملات**

* `string` — سلسلة نصية يُراد حساب قيمة التجزئة لها. [`String`](/ar/reference/data-types/string)
* `ngramsize` — اختياري. حجم `n-gram`، ويمكن أن يكون أي عدد من `1` إلى `25`. القيمة الافتراضية هي `3`. [`UInt8`](/ar/reference/data-types/int-uint)
* `hashnum` — اختياري. عدد قيم التجزئة الصغرى والكبرى المستخدمة لحساب النتيجة، ويمكن أن يكون أي عدد من `1` إلى `25`. القيمة الافتراضية هي `6`. [`UInt8`](/ar/reference/data-types/int-uint)

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

تعيد قيمة من النوع Tuple تحتوي على قيمتي Tuple، تضم كل واحدة منهما `hashnum` من `n-grams`. [`Tuple(Tuple(String))`](/ar/reference/data-types/tuple)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT ngramMinHashArgCaseInsensitiveUTF8('ClickHouse') AS Tuple;
```

```response title=Response theme={null}
┌─Tuple─────────────────────────────────────────────────────────────────────────┐
│ (('ckH','ous','ick','lic','kHo','use'),('kHo','lic','ick','ous','ckH','Hou')) │
└───────────────────────────────────────────────────────────────────────────────┘
```

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

قُدِّم في: v21.1.0

يقسّم سلسلة UTF-8 إلى n-grams من `ngramsize` رمزًا، ويُرجع قيم n-grams ذات أدنى وأعلى hash، كما تحسبها الدالة `ngramMinHashUTF8` للإدخال نفسه.
وهي حساسة لحالة الأحرف.

**البنية**

```sql theme={null}
ngramMinHashArgUTF8(string[, ngramsize, hashnum])
```

**الوسيطات**

* `string` — السلسلة النصية التي سيتم حساب قيمة التجزئة لها. [`String`](/ar/reference/data-types/string)
* `ngramsize` — اختياري. حجم `n-gram`، ويمكن أن يكون أي رقم من `1` إلى `25`. القيمة الافتراضية هي `3`. [`UInt8`](/ar/reference/data-types/int-uint)
* `hashnum` — اختياري. عدد قيم التجزئة الصغرى والكبرى المستخدمة لحساب النتيجة، ويمكن أن يكون أي رقم من `1` إلى `25`. القيمة الافتراضية هي `6`. [`UInt8`](/ar/reference/data-types/int-uint)

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

يعيد قيمة من النوع Tuple تحتوي على قيمتَي Tuple، يحتوي كلٌّ منهما على `hashnum` من `n-grams`. [`Tuple(Tuple(String))`](/ar/reference/data-types/tuple)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT ngramMinHashArgUTF8('ClickHouse') AS Tuple;
```

```response title=Response theme={null}
┌─Tuple─────────────────────────────────────────────────────────────────────────┐
│ (('ous','ick','lic','Hou','kHo','use'),('kHo','Hou','lic','ick','ous','ckH')) │
└───────────────────────────────────────────────────────────────────────────────┘
```

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

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

تُقسِّم سلسلة ASCII إلى n-grams من `ngramsize` رموز، وتحسب قيم hash لكل n-gram، وتُرجع Tuple بهذه الـ hashes.
وتستخدم `hashnum` من أقل قيم hash لحساب أدنى hash، و`hashnum` من أكبر قيم hash لحساب أقصى hash.
وهي غير حساسة لحالة الأحرف.

يمكن استخدامها لاكتشاف السلاسل شبه المتطابقة باستخدام [`tupleHammingDistance`](/ar/reference/functions/regular-functions/tuple-functions#tupleHammingDistance).
بالنسبة إلى سلسلتين، إذا كانت الـ hashes المُعادة متطابقة في كلتا السلسلتين، فهذا يعني أن السلسلتين متطابقتان.

**الصياغة**

```sql theme={null}
ngramMinHashCaseInsensitive(string[, ngramsize, hashnum])
```

**الوسيطات**

* `string` — سلسلة نصية. [String](/ar/reference/data-types/string). - `ngramsize` — حجم الـ n-gram. اختياري. القيم الممكنة: أي رقم من `1` إلى `25`. القيمة الافتراضية: `3`. [UInt8](/ar/reference/data-types/int-uint). - `hashnum` — عدد قيمتي hash الصغرى والكبرى المستخدمتين لحساب النتيجة. اختياري. القيم الممكنة: أي رقم من `1` إلى `25`. القيمة الافتراضية: `6`. [UInt8](/ar/reference/data-types/int-uint).

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

Tuple تضم قيمتي hash — الصغرى والكبرى. [Tuple](/ar/reference/data-types/tuple)([UInt64](/ar/reference/data-types/int-uint), [UInt64](/ar/reference/data-types/int-uint)). [`Tuple`](/ar/reference/data-types/tuple)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT ngramMinHashCaseInsensitive('ClickHouse') AS Tuple;
```

```response title=Response theme={null}
┌─Tuple──────────────────────────────────────┐
│ (2106263556442004574,13203602793651726206) │
└────────────────────────────────────────────┘
```

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

قُدِّمت في: v21.1.0

تُقسِّم سلسلة UTF-8 إلى n-grams من `ngramsize` رموز، وتحسب قيم hash لكل n-gram، ثم تُرجع Tuple تحتوي على هذه الـ hashes.
وتستخدم `hashnum` من أصغر قيم hash لحساب الحد الأدنى للـ hash، و`hashnum` من أكبر قيم hash لحساب الحد الأقصى للـ hash.
وهي غير حساسة لحالة الأحرف.

يمكن استخدامها لاكتشاف السلاسل شبه المتطابقة باستخدام [`tupleHammingDistance`](/ar/reference/functions/regular-functions/tuple-functions#tupleHammingDistance).
وبالنسبة إلى سلسلتين، إذا كانت الـ hashes المُعادة متطابقة في كلتا السلسلتين، فإن هاتين السلسلتين متطابقتان.

**البنية**

```sql theme={null}
ngramMinHashCaseInsensitiveUTF8(string [, ngramsize, hashnum])
```

**الوسائط**

* `string` — سلسلة نصية يُحسَب لها hash. [`String`](/ar/reference/data-types/string)
* `ngramsize` — اختياري. حجم `n-gram`، أي عدد من `1` إلى `25`. القيمة الافتراضية هي `3`. [`UInt8`](/ar/reference/data-types/int-uint)
* `hashnum` — اختياري. عدد قيم hash الصغرى والكبرى المستخدمة لحساب النتيجة، أي عدد من `1` إلى `25`. القيمة الافتراضية هي `6`. [`UInt8`](/ar/reference/data-types/int-uint)

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

يعيد قيمة من النوع [`Tuple`](/ar/reference/data-types/tuple) تحتوي على قيمتي hash — الصغرى والكبرى.

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT ngramMinHashCaseInsensitiveUTF8('ClickHouse') AS Tuple;
```

```response title=Response theme={null}
┌─Tuple───────────────────────────────────────┐
│ (12493625717655877135,13203602793651726206) │
└─────────────────────────────────────────────┘
```

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

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

تُقسِّم سلسلة UTF-8 إلى n-grams مكوّنة من `ngramsize` رمزًا، وتحسب قيم hash لكل n-gram، ثم تُرجع tuple تحتوي على هذه الـhashes.
وتستخدم `hashnum` من أصغر قيم hash لحساب أقل hash، و`hashnum` من أكبر قيم hash لحساب أكبر hash.
وهي حساسة لحالة الأحرف.

يمكن استخدامها لاكتشاف السلاسل شبه المتطابقة باستخدام [`tupleHammingDistance`](/ar/reference/functions/regular-functions/tuple-functions#tupleHammingDistance).
وبالنسبة إلى سلسلتين، إذا كانت الـhashes المُرجعة متطابقة في كلتا السلسلتين، فإن هاتين السلسلتين تكونان متطابقتين.

**البنية**

```sql theme={null}
ngramMinHashUTF8(string[, ngramsize, hashnum])
```

**الوسيطات**

* `string` — السلسلة النصية المطلوب حساب `hash` لها. [`String`](/ar/reference/data-types/string)
* `ngramsize` — اختياري. حجم `n-gram`، وأي قيمة من `1` إلى `25`. القيمة الافتراضية هي `3`. [`UInt8`](/ar/reference/data-types/int-uint)
* `hashnum` — اختياري. عدد قيم `hash` الصغرى والكبرى المستخدمة لحساب النتيجة، وأي قيمة من `1` إلى `25`. القيمة الافتراضية هي `6`. [`UInt8`](/ar/reference/data-types/int-uint)

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

تعيد قيمة من النوع `Tuple` تحتوي على قيمتي `hash` — الصغرى والكبرى. [`Tuple`](/ar/reference/data-types/tuple)

**أمثلة**

**مثال استخدام**

```sql title=Query theme={null}
SELECT ngramMinHashUTF8('ClickHouse') AS Tuple;
```

```response title=Response theme={null}
┌─Tuple──────────────────────────────────────┐
│ (18333312859352735453,6742163577938632877) │
└────────────────────────────────────────────┘
```

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

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

تقسّم سلسلة ASCII إلى مقاطع n-gram مكوّنة من `ngramsize` رمزًا، وتُرجع قيمة `simhash` الخاصة بـ n-gram.

يمكن استخدامها لاكتشاف السلاسل شبه المتطابقة باستخدام [`bitHammingDistance`](/ar/reference/functions/regular-functions/bit-functions#bitHammingDistance).
وكلما كانت [مسافة هامينغ](https://en.wikipedia.org/wiki/Hamming_distance) بين قيم `simhashes` المحسوبة لسلسلتين أصغر، زاد احتمال أن تكون هاتان السلسلتان متماثلتين.

**البنية**

```sql theme={null}
ngramSimHash(string[, ngramsize])
```

**الوسيطات**

* `string` — سلسلة نصية يُحسَب لها `simhash` مع مراعاة حالة الأحرف. [`String`](/ar/reference/data-types/string)
* `ngramsize` — اختياري. حجم `n-gram`، وأي قيمة من `1` إلى `25`. القيمة الافتراضية هي `3`. [`UInt8`](/ar/reference/data-types/int-uint)

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

يعيد `hash` المحسوب لسلسلة الإدخال. [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT ngramSimHash('ClickHouse') AS Hash;
```

```response title=Response theme={null}
┌───────Hash─┐
│ 1627567969 │
└────────────┘
```

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

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

تقسّم سلسلة ASCII إلى n-grams مكوّنة من `ngramsize` رموز وتُرجع قيمة `simhash` الخاصة بها.
وهي غير حساسة لحالة الأحرف.

يمكن استخدامها لاكتشاف السلاسل شبه المتطابقة باستخدام [`bitHammingDistance`](/ar/reference/functions/regular-functions/bit-functions#bitHammingDistance).
وكلما صغرت [مسافة هامنغ](https://en.wikipedia.org/wiki/Hamming_distance) لقيم `simhashes` المحسوبة لسلسلتين، زاد احتمال أن تكون هاتان السلسلتان متماثلتين.

**البنية**

```sql theme={null}
ngramSimHashCaseInsensitive(string[, ngramsize])
```

**المعاملات**

* `string` — السلسلة النصية التي يُحسب لها `simhash` غير الحساس لحالة الأحرف. [`String`](/ar/reference/data-types/string)
* `ngramsize` — اختياري. حجم `n-gram`، أي عدد من `1` إلى `25`. القيمة الافتراضية هي `3`. [`UInt8`](/ar/reference/data-types/int-uint)

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

قيمة التجزئة. [UInt64](/ar/reference/data-types/int-uint). [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT ngramSimHashCaseInsensitive('ClickHouse') AS Hash;
```

```response title=Response theme={null}
┌──────Hash─┐
│ 562180645 │
└───────────┘
```

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

متوفرة منذ: v21.1.0

تُقسِّم سلسلة نصية بتشفير UTF-8 إلى n-grams من رموز `ngramsize` وتُرجع `simhash` الخاص بـ n-gram.
وهي غير حساسة لحالة الأحرف.

يمكن استخدامها لاكتشاف السلاسل شبه المكررة باستخدام [bitHammingDistance](/ar/reference/functions/regular-functions/bit-functions#bitHammingDistance). وكلما صغرت [مسافة Hamming](https://en.wikipedia.org/wiki/Hamming_distance) بين قيم `simhashes` المحسوبة لسلسلتين، زاد احتمال أن تكونا متطابقتين.

**الصياغة**

```sql theme={null}
ngramSimHashCaseInsensitiveUTF8(string[, ngramsize])
```

**المعاملات**

* `string` — السلسلة النصية المراد حساب قيمة التجزئة لها. [`String`](/ar/reference/data-types/string)
* `ngramsize` — اختياري. حجم `n-gram`، أي عدد من `1` إلى `25`. القيمة الافتراضية هي `3`. [`UInt8`](/ar/reference/data-types/int-uint)

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

يعيد قيمة التجزئة المحسوبة. [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT ngramSimHashCaseInsensitiveUTF8('ClickHouse') AS Hash;
```

```response title=Response theme={null}
┌───────Hash─┐
│ 1636742693 │
└────────────┘
```

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

أُضيف في: v21.1.0

يُقسِّم سلسلة مُرمَّزة بترميز UTF-8 إلى وحدات n-gram من `ngramsize` رمزًا، ويُرجع `simhash` الخاص بها.
وهو حساس لحالة الأحرف.

يمكن استخدامه لاكتشاف السلاسل شبه المكررة باستخدام [`bitHammingDistance`](/ar/reference/functions/regular-functions/bit-functions#bitHammingDistance).
وكلما صغرت [مسافة هامينغ](https://en.wikipedia.org/wiki/Hamming_distance) بين قيم `simhash` المحسوبة لسلسلتين، زادت احتمالية أن تكونا متماثلتين.

**البنية**

```sql theme={null}
ngramSimHashUTF8(string[, ngramsize])
```

**المعاملات**

* `string` — سلسلة نصية يُحسب لها `hash`. [`String`](/ar/reference/data-types/string)
* `ngramsize` — اختياري. حجم `n-gram`، وهو أي رقم من `1` إلى `25`. القيمة الافتراضية هي `3`. [`UInt8`](/ar/reference/data-types/int-uint)

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

يرجع قيمة `hash` المحسوبة. [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT ngramSimHashUTF8('ClickHouse') AS Hash;
```

```response title=Response theme={null}
┌───────Hash─┐
│ 1628157797 │
└────────────┘
```

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

أُضيف في: v1.1.0

يشبه [`sipHash64`](#sipHash64)، لكنه يُنتج قيمة hash بطول 128 بت، أي إن حالة xor-folding النهائية تُحسب حتى 128 بت.

<Tip>
  **استخدم sipHash128Reference في المشاريع الجديدة**

  يختلف هذا المتغير ذو 128 بت عن التنفيذ المرجعي، وهو أضعف.
  وُجد هذا الإصدار لأنه، وقت كتابته، لم يكن هناك امتداد رسمي لـ SipHash بطول 128 بت.
  يُنصح في المشاريع الجديدة باستخدام [`sipHash128Reference`](#sipHash128Reference).
</Tip>

**الصيغة**

```sql theme={null}
sipHash128(arg1[, arg2, ...])
```

**الوسيطات**

* `arg1[, arg2, ...]` — عدد متغيّر من وسيطات الإدخال التي تُحسَب لها قيمة التجزئة. [`Any`](/ar/reference/data-types/index)

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

يعيد قيمة تجزئة `SipHash` بطول 128 بت. [`FixedString(16)`](/ar/reference/data-types/fixedstring)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT hex(sipHash128('foo', '\x01', 3));
```

```response title=Response theme={null}
┌─hex(sipHash128('foo', '', 3))────┐
│ 9DE516A64A414D4B1B609415E4523F24 │
└──────────────────────────────────┘
```

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

أُضيف في: v23.2.0

مماثل لـ [`sipHash128`](#sipHash128)، لكنه يأخذ أيضًا وسيطة مفتاح محددة صراحةً بدلًا من استخدام مفتاح ثابت.

<Tip>
  **استخدم sipHash128ReferenceKeyed في المشروعات الجديدة**

  يختلف هذا الإصدار ذو 128 بت عن التنفيذ المرجعي، كما أنه أضعف.
  وتوجد هذه النسخة لأنه، وقت كتابتها، لم يكن هناك امتداد رسمي لـ SipHash بطول 128 بت.
  ويُرجَّح أن تستخدم المشروعات الجديدة [`sipHash128ReferenceKeyed`](#sipHash128ReferenceKeyed).
</Tip>

**الصيغة**

```sql theme={null}
sipHash128Keyed((k0, k1), [arg1, arg2, ...])
```

**الوسائط**

* `(k0, k1)` — زوج مرتب من قيمتَي UInt64 يمثّل المفتاح. [`Tuple(UInt64, UInt64)`](/ar/reference/data-types/tuple)
* `arg1[, arg2, ...]` — عدد متغيّر من وسائط الإدخال التي تُحسب لها قيمة التجزئة. [`Any`](/ar/reference/data-types/index)

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

قيمة تجزئة `SipHash` بطول 128 بت من النوع [FixedString(16)](/ar/reference/data-types/fixedstring). [`FixedString(16)`](/ar/reference/data-types/fixedstring)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT hex(sipHash128Keyed((506097522914230528, 1084818905618843912),'foo', '\x01', 3));
```

```response title=Response theme={null}
┌─hex(sipHash128Keyed((506097522914230528, 1084818905618843912), 'foo', '', 3))─┐
│ B8467F65C8B4CFD9A5F8BD733917D9BF                                              │
└───────────────────────────────────────────────────────────────────────────────┘
```

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

أُضيفت في: v23.2.0

مثل [`sipHash128`](/ar/reference/functions/regular-functions/hash-functions#sipHash128)، لكنه يطبّق خوارزمية 128 بت الخاصة بالمؤلفين الأصليين لـ SipHash.

**الصياغة**

```sql theme={null}
sipHash128Reference(arg1[, arg2, ...])
```

**المعاملات**

* `arg1[, arg2, ...]` — عدد متغيّر من معاملات الإدخال التي تُحسب لها قيمة التجزئة. [`Any`](/ar/reference/data-types/index)

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

يعيد قيمة تجزئة `SipHash` محسوبة بطول 128 بت لمعاملات الإدخال. [`FixedString(16)`](/ar/reference/data-types/fixedstring)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT hex(sipHash128Reference('foo', '', 3));
```

```response title=Response theme={null}
┌─hex(sipHash128Reference('foo', '', 3))─┐
│ 4D1BE1A22D7F5933C0873E1698426260       │
└────────────────────────────────────────┘
```

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

أُضيف في: v23.2.0

مماثلة لـ [`sipHash128Reference`](#sipHash128Reference)، لكنها تأخذ أيضًا وسيطة مفتاح صريحة بدلًا من استخدام مفتاح ثابت.

**البنية**

```sql theme={null}
sipHash128ReferenceKeyed((k0, k1), arg1[, arg2, ...])
```

**المعاملات**

* `(k0, k1)` — `Tuple` من قيمتين تمثلان المفتاح [`Tuple(UInt64, UInt64)`](/ar/reference/data-types/tuple)
* `arg1[, arg2, ...]` — عدد متغير من معاملات الإدخال المطلوب حساب التجزئة لها. [`Any`](/ar/reference/data-types/index)

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

تُعيد قيمة تجزئة `SipHash` المحسوبة بطول 128 بت لمعاملات الإدخال. [`FixedString(16)`](/ar/reference/data-types/fixedstring)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT hex(sipHash128Reference('foo', '', 3));
```

```response title=Response theme={null}
┌─hex(sipHash128Reference('foo', '', 3))─┐
│ 4D1BE1A22D7F5933C0873E1698426260       │
└────────────────────────────────────────┘
```

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

أُضيف في: v1.1.0

ينتج قيمة تجزئة [SipHash](https://en.wikipedia.org/wiki/SipHash) بطول 64 بت.

هذه دالة تجزئة تشفيرية. وهي تعمل بسرعة تزيد ثلاث مرات على الأقل عن دالة التجزئة [`MD5`](#MD5).

تتعامل الدالة [interprets](/ar/reference/functions/regular-functions/type-conversion-functions#reinterpretAsString) مع جميع معلمات الإدخال على أنها سلاسل نصية، وتحسب قيمة تجزئة لكل واحدة منها.
ثم تدمج قيم التجزئة باستخدام الخوارزمية التالية:

1. تُدمَج قيمتا التجزئة الأولى والثانية في مصفوفة، ثم تُحسَب لهما قيمة تجزئة.
2. تُحسَب قيمة التجزئة المحسوبة سابقًا وقيمة تجزئة معلمة الإدخال الثالثة بطريقة مماثلة.
3. يتكرر هذا الحساب مع جميع قيم التجزئة المتبقية من الإدخال الأصلي.

<Note>
  قد تتساوى قيم التجزئة المحسوبة لقيم الإدخال نفسها رغم اختلاف أنواع الوسائط.
  ويؤثر ذلك، على سبيل المثال، في أنواع الأعداد الصحيحة ذات الأحجام المختلفة، و`Tuple` المسمّى وغير المسمّى الذي يحتوي على البيانات نفسها، و`Map` والنوع المقابل `Array(Tuple(key, value))` الذي يحتوي على البيانات نفسها.
</Note>

**البنية**

```sql theme={null}
sipHash64(arg1[, arg2, ...])
```

**الوسيطات**

* `arg1[, arg2, ...]` — عدد متغير من وسيطات الإدخال. [`Any`](/ar/reference/data-types/index)

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

تعيد قيمة تجزئة محسوبة لوسيطات الإدخال. [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT sipHash64(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23:00:00')) AS SipHash, toTypeName(SipHash) AS type;
```

```response title=Response theme={null}
┌──────────────SipHash─┬─type───┐
│ 11400366955626497465 │ UInt64 │
└──────────────────────┴────────┘
```

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

أُضيف في: v23.2.0

يشبه [`sipHash64`](#sipHash64)، لكنه يأخذ أيضًا وسيطة مفتاح صريحة بدلًا من استخدام مفتاح ثابت.

**الصيغة**

```sql theme={null}
sipHash64Keyed((k0, k1), arg1[,arg2, ...])
```

**الوسيطات**

* `(k0, k1)` — زوج `Tuple` من قيمتين يمثّل المفتاح. [`Tuple(UInt64, UInt64)`](/ar/reference/data-types/tuple)
* `arg1[,arg2, ...]` — عدد متغير من وسيطات الإدخال. [`Any`](/ar/reference/data-types/index)

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

تعيد قيمة التجزئة المحسوبة لقيم الإدخال. [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT sipHash64Keyed((506097522914230528, 1084818905618843912), array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23:00:00')) AS SipHash, toTypeName(SipHash) AS type;
```

```response title=Response theme={null}
┌─────────────SipHash─┬─type───┐
│ 8017656310194184311 │ UInt64 │
└─────────────────────┴────────┘
```

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

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

تُقسِّم سلسلة ASCII إلى أجزاء (shingles) تتألف من `shinglesize` كلمات، وتحسب قيم hash لكل shingle كلمات وتُرجع Tuple بهذه القيم.
وتستخدم `hashnum` من أقل قيم hash لحساب أقل hash، و`hashnum` من أكبر قيم hash لحساب أكبر hash.
وهي حساسة لحالة الأحرف.

يمكن استخدامها لاكتشاف السلاسل شبه المتطابقة باستخدام [`tupleHammingDistance`](/ar/reference/functions/regular-functions/tuple-functions#tupleHammingDistance).
وبالنسبة إلى سلسلتين، إذا كانت قيم hash المُعادة متطابقة لكلتا السلسلتين، فهذا يعني أن السلسلتين متطابقتان.

**الصيغة**

```sql theme={null}
wordShingleMinHash(string[, shinglesize, hashnum])
```

**الوسائط**

* `string` — السلسلة النصية المطلوب حساب قيمة `hash` لها. [`String`](/ar/reference/data-types/string)
* `shinglesize` — اختياري. حجم `word shingle`، وأي قيمة من `1` إلى `25`. القيمة الافتراضية هي `3`. [`UInt8`](/ar/reference/data-types/int-uint)
* `hashnum` — اختياري. عدد قيم `hash` الصغرى والكبرى المستخدمة لحساب النتيجة، وأي قيمة من `1` إلى `25`. القيمة الافتراضية هي `6`. [`UInt8`](/ar/reference/data-types/int-uint)

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

يعيد `Tuple` يحتوي على قيمتي `hash` — الصغرى والكبرى. [`Tuple(UInt64, UInt64)`](/ar/reference/data-types/tuple)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT wordShingleMinHash('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).') AS Tuple;
```

```response title=Response theme={null}
┌─Tuple──────────────────────────────────────┐
│ (16452112859864147620,5844417301642981317) │
└────────────────────────────────────────────┘
```

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

أُضيف في: v1.1.0

يقسم سلسلة ASCII إلى أجزاء (`shingles`)، يتكوّن كل جزء منها من `shinglesize` كلمات، ويُرجع أجزاء `shingles` ذات الحد الأدنى والأقصى من قيم hash للكلمات، كما تحتسبها الدالة wordShingleMinHash باستخدام الإدخال نفسه.
وهي حساسة لحالة الأحرف.

**الصيغة**

```sql theme={null}
wordShingleMinHashArg(string[, shinglesize, hashnum])
```

**الوسائط**

* `string` — سلسلة نصية تُحسب لها قيمة التجزئة. [`String`](/ar/reference/data-types/string)
* `shinglesize` — اختياري. حجم مقطع الكلمات، أي رقم من `1` إلى `25`. القيمة الافتراضية هي `3`. [`UInt8`](/ar/reference/data-types/int-uint)
* `hashnum` — اختياري. عدد قيم التجزئة الدنيا والعليا المستخدمة لحساب النتيجة، أي رقم من `1` إلى `25`. القيمة الافتراضية هي `6`. [`UInt8`](/ar/reference/data-types/int-uint)

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

يعيد `Tuple` يحتوي على اثنين من `Tuple`، يحتوي كل منهما على `hashnum` من مقاطع الكلمات. [`Tuple(Tuple(String))`](/ar/reference/data-types/tuple)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT wordShingleMinHashArg('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).', 1, 3) AS Tuple;
```

```response title=Response theme={null}
┌─Tuple─────────────────────────────────────────────────────────────────┐
│ (('OLAP','database','analytical'),('online','oriented','processing')) │
└───────────────────────────────────────────────────────────────────────┘
```

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

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

تُقسِّم سلسلة ASCII إلى أجزاء (shingles) يتكوّن كل جزء منها من `shinglesize` كلمات، وتُرجع الـ shingles ذات أقل وأكبر قيم hash للكلمات، كما تحسبها الدالة [`wordShingleMinHashCaseInsensitive`](#wordShingleMinHashCaseInsensitive) باستخدام الإدخال نفسه.
وهي لا تراعي حالة الأحرف.

**الصيغة**

```sql theme={null}
wordShingleMinHashArgCaseInsensitive(string[, shinglesize, hashnum])
```

**الوسيطات**

* `string` — سلسلة نصية تُحسب لها قيمة التجزئة. [`String`](/ar/reference/data-types/string)
* `shinglesize` — اختياري. حجم شينغل الكلمات، أي رقم من `1` إلى `25`. القيمة الافتراضية هي `3`. [`UInt8`](/ar/reference/data-types/int-uint)
* `hashnum` — اختياري. عدد أقل وأعلى قيم التجزئة المستخدمة لحساب النتيجة، أي رقم من `1` إلى `25`. القيمة الافتراضية هي `6`. [`UInt8`](/ar/reference/data-types/int-uint)

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

يُرجع قيمة Tuple تحتوي على قيمتَي Tuple، تحتوي كل منهما على `hashnum` من شينغل الكلمات. [`Tuple(Tuple(String))`](/ar/reference/data-types/tuple)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT wordShingleMinHashArgCaseInsensitive('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).', 1, 3) AS Tuple;
```

```response title=Response theme={null}
┌─Tuple──────────────────────────────────────────────────────────────────┐
│ (('queries','database','analytical'),('oriented','processing','DBMS')) │
└────────────────────────────────────────────────────────────────────────┘
```

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

أُضيف في: v21.1.0

تقسم سلسلة UTF-8 إلى أجزاء (shingles) يتألف كل منها من `shinglesize` كلمة، وتُرجع الـ shingles ذات أدنى وأعلى قيم hash للكلمات، كما تحسبها الدالة [`wordShingleMinHashCaseInsensitiveUTF8`](#wordShingleMinHashCaseInsensitiveUTF8) للمدخل نفسه.
وهي غير حساسة لحالة الأحرف.

**البنية**

```sql theme={null}
wordShingleMinHashArgCaseInsensitiveUTF8(string[, shinglesize, hashnum])
```

**المعاملات**

* `string` — سلسلة نصية يُراد حساب قيمة التجزئة لها. [`String`](/ar/reference/data-types/string)
* `shinglesize` — اختياري. حجم تتابع الكلمات، وأي رقم من `1` إلى `25`. القيمة الافتراضية هي `3`. [`UInt8`](/ar/reference/data-types/int-uint)
* `hashnum` — اختياري. عدد قيم التجزئة الصغرى والكبرى المستخدمة لحساب النتيجة، وأي رقم من `1` إلى `25`. القيمة الافتراضية هي `6`. [`UInt8`](/ar/reference/data-types/int-uint)

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

تعيد tuple تتكوّن من tupleين، يحتوي كلٌّ منهما على `hashnum` من تتابعات الكلمات. [`Tuple(Tuple(String))`](/ar/reference/data-types/tuple)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT wordShingleMinHashArgCaseInsensitiveUTF8('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).', 1, 3) AS Tuple;
```

```response title=Response theme={null}
┌─Tuple──────────────────────────────────────────────────────────────────┐
│ (('queries','database','analytical'),('oriented','processing','DBMS')) │
└────────────────────────────────────────────────────────────────────────┘
```

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

أُضيف في: v21.1.0

يقسّم سلسلة UTF-8 إلى مقاطع (shingles)، يتألف كل منها من `shinglesize` كلمات، ويُرجع الـ shingles ذات أصغر وأكبر hash للكلمات، كما تحسبها الدالة [`wordShingleMinHashUTF8`](#wordShingleMinHashUTF8) باستخدام المُدخل نفسه.
وهي حساسة لحالة الأحرف.

**الصياغة**

```sql theme={null}
wordShingleMinHashArgUTF8(string[, shinglesize, hashnum])
```

**الوسيطات**

* `string` — سلسلة نصية يُحسب لها `hash`. [`String`](/ar/reference/data-types/string)
* `shinglesize` — اختياري. حجم شينغل الكلمات، أي عدد من `1` إلى `25`. القيمة الافتراضية هي `3`. [`UInt8`](/ar/reference/data-types/int-uint)
* `hashnum` — اختياري. عدد قيم `hash` الصغرى والكبرى المستخدمة لحساب النتيجة، أي عدد من `1` إلى `25`. القيمة الافتراضية هي `6`. [`UInt8`](/ar/reference/data-types/int-uint)

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

تُرجِع قيمة من النوع `Tuple` تحتوي على `Tuple`ين، يضم كلٌّ منهما `hashnum` من شينغل الكلمات. [`Tuple(Tuple(String))`](/ar/reference/data-types/tuple)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT wordShingleMinHashArgUTF8('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).', 1, 3) AS Tuple;
```

```response title=Response theme={null}
┌─Tuple─────────────────────────────────────────────────────────────────┐
│ (('OLAP','database','analytical'),('online','oriented','processing')) │
└───────────────────────────────────────────────────────────────────────┘
```

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

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

تُقسِّم سلسلة ASCII إلى أجزاء (shingles) من `shinglesize` كلمات، وتحسب قيم hash لكل word shingle وتُرجع tuple بهذه القيم.
وتستخدم أقل `hashnum` من قيم hash لحساب قيمة hash الدنيا، وأعلى `hashnum` من قيم hash لحساب قيمة hash القصوى.
وهي غير حساسة لحالة الأحرف.

يمكن استخدامها لاكتشاف السلاسل شبه المكررة باستخدام [`tupleHammingDistance`](/ar/reference/functions/regular-functions/tuple-functions#tupleHammingDistance).
وبالنسبة إلى سلسلتين، إذا كانت قيم hash المُعادة متطابقة لكلتا السلسلتين، فإن هاتين السلسلتين متطابقتان.

**البنية**

```sql theme={null}
wordShingleMinHashCaseInsensitive(string[, shinglesize, hashnum])
```

**المعاملات**

* `string` — سلسلة نصية يُحسَب لها `hash`. [`String`](/ar/reference/data-types/string)
* `shinglesize` — اختياري. حجم `word shingle`، أي عدد من `1` إلى `25`. القيمة الافتراضية هي `3`. [`UInt8`](/ar/reference/data-types/int-uint)
* `hashnum` — اختياري. عدد قيم `hash` الصغرى والكبرى المستخدمة في حساب النتيجة، أي عدد من `1` إلى `25`. القيمة الافتراضية هي `6`. [`UInt8`](/ar/reference/data-types/int-uint)

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

تعيد قيمة `Tuple` تضم قيمتي `hash` — الصغرى والكبرى. [`Tuple(UInt64, UInt64)`](/ar/reference/data-types/tuple)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT wordShingleMinHashCaseInsensitive('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).') AS Tuple;
```

```response title=Response theme={null}
┌─Tuple─────────────────────────────────────┐
│ (3065874883688416519,1634050779997673240) │
└───────────────────────────────────────────┘
```

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

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

تقسّم سلسلة UTF-8 إلى أجزاء (shingles) يتكوّن كل منها من `shinglesize` كلمات، وتحسب قيم hash لكل word shingle وتُرجع Tuple يحتوي على هذه القيم.
وتستخدم `hashnum` من أصغر قيم hash لحساب الحد الأدنى للـhash، و`hashnum` من أكبر قيم hash لحساب الحد الأقصى للـhash.
وهي غير حساسة لحالة الأحرف.

يمكن استخدامها لاكتشاف السلاسل شبه المتطابقة باستخدام [`tupleHammingDistance`](/ar/reference/functions/regular-functions/tuple-functions#tupleHammingDistance).
وبالنسبة إلى سلسلتين، إذا كانت قيم hash المُعادة متطابقة لكليهما، فإن هاتين السلسلتين متطابقتان.

**البنية**

```sql theme={null}
wordShingleMinHashCaseInsensitiveUTF8(string[, shinglesize, hashnum])
```

**الوسيطات**

* `string` — قيمة String يُراد حساب `hash` لها. [`String`](/ar/reference/data-types/string)
* `shinglesize` — اختياري. حجم `word shingle`، وهو أي رقم من `1` إلى `25`. القيمة الافتراضية هي `3`. [`UInt8`](/ar/reference/data-types/int-uint)
* `hashnum` — اختياري. عدد قيم `hash` الصغرى والكبرى المستخدمة لحساب النتيجة، وهو أي رقم من `1` إلى `25`. القيمة الافتراضية هي `6`. [`UInt8`](/ar/reference/data-types/int-uint)

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

يعيد قيمة Tuple تحتوي على قيمتي `hash` — الصغرى والكبرى. [`Tuple(UInt64, UInt64)`](/ar/reference/data-types/tuple)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT wordShingleMinHashCaseInsensitiveUTF8('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).') AS Tuple;
```

```response title=Response theme={null}
┌─Tuple─────────────────────────────────────┐
│ (3065874883688416519,1634050779997673240) │
└───────────────────────────────────────────┘
```

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

أُضيف في: v21.1.0

يُقسِّم سلسلة UTF-8 إلى مقاطع (`shingles`) تتكوّن من `shinglesize` كلمات، ويحسب قيم `hash` لكل `word shingle` ويُرجع `tuple` يحتوي على قيم `hash` هذه.
ويستخدم أصغر `hashnum` من قيم `hash` لحساب الحد الأدنى لـ `hash`، وأكبر `hashnum` من قيم `hash` لحساب الحد الأقصى لـ `hash`.
وهو حسّاس لحالة الأحرف.

يمكن استخدامه لاكتشاف السلاسل شبه المتطابقة باستخدام [`tupleHammingDistance`](/ar/reference/functions/regular-functions/tuple-functions#tupleHammingDistance).
بالنسبة إلى سلسلتين، إذا كانت قيم `hash` المُعادة متطابقة لكليهما، فهذا يعني أن السلسلتين متطابقتان.

**البنية**

```sql theme={null}
wordShingleMinHashUTF8(string[, shinglesize, hashnum])
```

**المعاملات**

* `string` — سلسلة نصية يُحسَب لها hash. [`String`](/ar/reference/data-types/string)
* `shinglesize` — اختياري. حجم `word shingle`، أي عدد من `1` إلى `25`. القيمة الافتراضية هي `3`. [`UInt8`](/ar/reference/data-types/int-uint)
* `hashnum` — اختياري. عدد قيم hash الدنيا والعليا المستخدمة لحساب النتيجة، أي عدد من `1` إلى `25`. القيمة الافتراضية هي `6`. [`UInt8`](/ar/reference/data-types/int-uint)

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

يعيد Tuple يحتوي على قيمتي hash — الدنيا والعليا. [`Tuple(UInt64, UInt64)`](/ar/reference/data-types/tuple)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT wordShingleMinHashUTF8('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).') AS Tuple;
```

```response title=Response theme={null}
┌─Tuple──────────────────────────────────────┐
│ (16452112859864147620,5844417301642981317) │
└────────────────────────────────────────────┘
```

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

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

تُقسِّم سلسلة ASCII إلى مقاطع (`shingles`) من `shinglesize` كلمات وتُرجع `simhash` لشينغل الكلمات.
وهي حساسة لحالة الأحرف.

يمكن استخدامها لاكتشاف السلاسل شبه المتطابقة باستخدام [`bitHammingDistance`](/ar/reference/functions/regular-functions/bit-functions#bitHammingDistance).
كلما صغرت [مسافة هامينغ](https://en.wikipedia.org/wiki/Hamming_distance) بين قيم `simhash` المحسوبة لسلسلتين، زاد احتمال أن تكون هاتان السلسلتان متماثلتين.

**الصيغة**

```sql theme={null}
wordShingleSimHash(string[, shinglesize])
```

**المعاملات**

* `string` — سلسلة تُحسب لها قيمة التجزئة. [`String`](/ar/reference/data-types/string)
* `shinglesize` — اختياري. حجم مجموعة كلمات متجاورة، أي قيمة من `1` إلى `25`. القيمة الافتراضية هي `3`. [`UInt8`](/ar/reference/data-types/int-uint)

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

تعيد قيمة التجزئة المحسوبة. [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT wordShingleSimHash('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).') AS Hash;
```

```response title=Response theme={null}
┌───────Hash─┐
│ 2328277067 │
└────────────┘
```

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

قُدِّمت في: v21.1.0

تقسّم سلسلة ASCII إلى أجزاء (shingles)، يتكوّن كل منها من `shinglesize` كلمات، وتُرجع قيمة `simhash` الخاصة بـ word shingle.
وهي غير حساسة لحالة الأحرف.

يمكن استخدامها لاكتشاف السلاسل شبه المتطابقة باستخدام [`bitHammingDistance`](/ar/reference/functions/regular-functions/bit-functions#bitHammingDistance).
وكلما صغرت [مسافة هامنغ](https://en.wikipedia.org/wiki/Hamming_distance) بين قيم `simhashes` المحسوبة لسلسلتين، زاد احتمال أن تكونا متماثلتين.

**الصياغة**

```sql theme={null}
wordShingleSimHashCaseInsensitive(string[, shinglesize])
```

**الوسيطات**

* `string` — السلسلة النصية المراد حساب قيمة التجزئة لها. [`String`](/ar/reference/data-types/string)
* `shinglesize` — اختياري. حجم `word shingle`، ويمكن أن يكون أي رقم من `1` إلى `25`. القيمة الافتراضية هي `3`. [`UInt8`](/ar/reference/data-types/int-uint)

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

تُرجع قيمة التجزئة المحسوبة. [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT wordShingleSimHashCaseInsensitive('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).') AS Hash;
```

```response title=Response theme={null}
┌───────Hash─┐
│ 2194812424 │
└────────────┘
```

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

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

تقسّم سلسلة نصية بترميز UTF-8 إلى أجزاء (shingles) من `shinglesize` كلمات، وتُرجع `simhash` لـ word shingle.
وهي غير حساسة لحالة الأحرف.

يمكن استخدامها لاكتشاف السلاسل شبه المتطابقة باستخدام [`bitHammingDistance`](/ar/reference/functions/regular-functions/bit-functions#bitHammingDistance).
وكلما صغرت [مسافة Hamming](https://en.wikipedia.org/wiki/Hamming_distance) المحسوبة لـ `simhashes` الخاصتين بسلسلتين، زاد احتمال أن تكون هاتان السلسلتان متطابقتين.

**الصيغة**

```sql theme={null}
wordShingleSimHashCaseInsensitiveUTF8(string[, shinglesize])
```

**الوسيطات**

* `string` — السلسلة النصية المراد حساب قيمة التجزئة لها. [`String`](/ar/reference/data-types/string)
* `shinglesize` — اختياري. حجم تسلسل الكلمات المتجاورة، أي عدد من `1` إلى `25`. القيمة الافتراضية هي `3`. [`UInt8`](/ar/reference/data-types/int-uint)

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

تُرجِع قيمة التجزئة المحسوبة. [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT wordShingleSimHashCaseInsensitiveUTF8('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).') AS Hash;
```

```response title=Response theme={null}
┌───────Hash─┐
│ 2194812424 │
└────────────┘
```

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

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

تقسّم سلسلة UTF-8 إلى أجزاء (shingles) مكوّنة من `shinglesize` كلمات، وتُرجع `simhash` لـ word shingle.
وهي case sensitive.

يمكن استخدامها لاكتشاف semi-duplicate strings باستخدام [`bitHammingDistance`](/ar/reference/functions/regular-functions/bit-functions#bitHammingDistance).
وكلما صغرت [Hamming distance](https://en.wikipedia.org/wiki/Hamming_distance) لقيم `simhashes` المحسوبة لسلسلتين، زاد احتمال أن تكون هاتان السلسلتان متماثلتين.

**الصيغة**

```sql theme={null}
wordShingleSimHashUTF8(string[, shinglesize])
```

**الوسائط**

* `string` — السلسلة النصية المطلوب حساب قيمة التجزئة لها. [`String`](/ar/reference/data-types/string)
* `shinglesize` — اختياري. حجم مجموعة كلمات متجاورة، أي رقم من `1` إلى `25`. القيمة الافتراضية هي `3`. [`UInt8`](/ar/reference/data-types/int-uint)

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

يعيد قيمة التجزئة المحسوبة. [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT wordShingleSimHashUTF8('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).') AS Hash;
```

```response title=Response theme={null}
┌───────Hash─┐
│ 2328277067 │
└────────────┘
```

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

أُضيف في: v22.7.0

يحسب قيمة هاش 64 بت باستخدام [wyHash64](https://github.com/wangyi-fudan/wyhash).

**الصيغة**

```sql theme={null}
wyHash64(arg)
```

**الوسيطات**

* `arg` — وسيط من النوع String تُحسَب له قيمة `hash`. [`String`](/ar/reference/data-types/string)

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

يعيد قيمة `hash` محسوبة بطول 64 بت من النوع [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT wyHash64('ClickHouse') AS Hash;
```

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

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

قُدِّمت في: v20.1.0

تحسب قيمة [xxHash](http://cyan4973.github.io/xxHash/) من سلسلة نصية.

للاطلاع على الإصدار ذي 64 بت، راجع [`xxHash64`](#xxHash64)

**البنية**

```sql theme={null}
xxHash32(arg)
```

**الوسيطات**

* `arg` — سلسلة الإدخال المطلوب تجزئتها. [`String`](/ar/reference/data-types/string)

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

يعيد قيمة التجزئة المحسوبة المكوّنة من 32 بت لسلسلة الإدخال. [`UInt32`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT xxHash32('Hello, world!');
```

```response title=Response theme={null}
┌─xxHash32('Hello, world!')─┐
│                 834093149 │
└───────────────────────────┘
```

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

أُضيف في: v20.1.0

يحسب قيمة [xxHash](http://cyan4973.github.io/xxHash/) من سلسلة نصية.

للاطلاع على الإصدار ذي 32 بت، انظر [`xxHash32`](#xxHash32)

**البنية**

```sql theme={null}
xxHash64(arg)
```

**الوسيطات**

* `arg` — سلسلة الإدخال المراد تجزئتها. [`String`](/ar/reference/data-types/string)

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

تعيد قيمة التجزئة المحسوبة لسلسلة الإدخال بطول 64 بت. [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT xxHash64('Hello, world!');
```

```response title=Response theme={null}
┌─xxHash64('Hello, world!')─┐
│      17691043854468224118 │
└───────────────────────────┘
```

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

استُحدثت في: v22.12.0

تحسب قيمة تجزئة [XXH3](https://github.com/Cyan4973/xxHash) بطول 64 بت.

**البنية**

```sql theme={null}
xxh3(expr)
```

**الوسائط**

* `expr` — قائمة من التعبيرات من أي نوع بيانات. [`Any`](/ar/reference/data-types/index)

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

تعيد قيمة التجزئة `xxh3` المحسوبة ذات 64 بت [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT xxh3('ClickHouse')
```

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

<div id="xxh3_128">
  ## xxh3\_128
</div>

استُحدث في: v26.2.0

يحسب قيمة تجزئة [XXH3](https://github.com/Cyan4973/xxHash) بطول 128 بت.

**الصيغة**

```sql theme={null}
xxh3_128(expr)
```

**الوسيطات**

* `expr` — قائمة بالتعبيرات من أي نوع بيانات. [`Any`](/ar/reference/data-types/index)

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

يعيد قيمة التجزئة `xxh3` المحسوبة بطول 128 بت [`UInt128`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT hex(xxh3_128('ClickHouse'))
```

```response title=Response theme={null}
3A038784C52804B4DBA43A038784C528
```
