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

> توثيق دوال السلاسل النصية

# دوال للتعامل مع السلاسل النصية

export const VersionBadge = ({minVersion}) => <div className="versionBadge">
    <div className="versionIcon" style={{
  marginRight: "8px",
  marginTop: "4px"
}}>
      <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
        <path d="M5 14C5.82843 14 6.5 13.3284 6.5 12.5C6.5 11.6716 5.82843 11 5 11C4.17157 11 3.5 11.6716 3.5 12.5C3.5 13.3284 4.17157 14 5 14Z" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" strokeWidth="1.25" />
        <path d="M5 5C5.82843 5 6.5 4.32843 6.5 3.5C6.5 2.67157 5.82843 2 5 2C4.17157 2 3.5 2.67157 3.5 3.5C3.5 4.32843 4.17157 5 5 5Z" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" strokeWidth="1.25" />
        <path d="M13 10.5C13.8284 10.5 14.5 9.82843 14.5 9C14.5 8.17157 13.8284 7.5 13 7.5C12.1716 7.5 11.5 8.17157 11.5 9C11.5 9.82843 12.1716 10.5 13 10.5Z" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" strokeWidth="1.25" />
        <path d="M11.5 9H9.5C9.03426 9 8.57493 8.89157 8.15836 8.68328C7.74179 8.475 7.37944 8.17259 7.1 7.8L5 5V11" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" strokeWidth="1.25" />
      </svg>
    </div>
    متاح في الإصدار {minVersion} والإصدارات الأحدث
  </div>;

يتم تناول الدوال الخاصة بـ[البحث](/ar/reference/functions/regular-functions/string-search-functions) في السلاسل النصية وبـ[الاستبدال](/ar/reference/functions/regular-functions/string-replace-functions) فيها بشكل منفصل.

<Note>
  يتم إنشاء الوثائق أدناه من جدول النظام `system.functions`.
</Note>

{/*AUTOGENERATED_START*/}

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

أُضيف في: v20.1.0

يحسب قيمة المجموع الاختباري ‏CRC32 لسلسلة نصية باستخدام كثير الحدود CRC-32-IEEE 802.3 والقيمة الابتدائية `0xffffffff` (بتنفيذ zlib).

**الصيغة**

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

**الوسائط**

* `s` — سلسلة من نوع `String` يُراد حساب CRC32 لها. [`String`](/ar/reference/data-types/string)

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

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

**أمثلة**

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

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

```response title=Response theme={null}
┌─CRC32('ClickHouse')─┐
│          1538217360 │
└─────────────────────┘
```

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

استُحدث في: v20.1.0

يحسب المجموع الاختباري CRC32 لسلسلة نصية باستخدام كثيرة الحدود CRC-32-IEEE 802.3.

**الصياغة**

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

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

* `s` — السلسلة النصية المراد حساب قيمة CRC32 لها. [`String`](/ar/reference/data-types/string)

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

تُرجع المجموع الاختباري CRC32 للسلسلة النصية. [`UInt32`](/ar/reference/data-types/int-uint)

**أمثلة**

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

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

```response title=Response theme={null}
┌─CRC32IEEE('ClickHouse')─┐
│              3089448422 │
└─────────────────────────┘
```

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

أُضيف في: v20.1.0

يحسب المجموع الاختباري CRC64 لسلسلة باستخدام كثير الحدود CRC-64-ECMA.

**الصيغة**

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

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

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

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

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

**أمثلة**

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

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

```response title=Response theme={null}
┌──CRC64('ClickHouse')─┐
│ 12126588151325169346 │
└──────────────────────┘
```

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

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

تُضيف الحرف `c` إلى السلسلة `s` إذا كانت `s` غير فارغة ولا تنتهي بالحرف `c`.

**الصياغة**

```sql theme={null}
appendTrailingCharIfAbsent(s, c)
```

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

* `s` — سلسلة الإدخال. [`String`](/ar/reference/data-types/string)
* `c` — المحرف الذي يُلحَق إذا لم يكن موجودًا. [`String`](/ar/reference/data-types/string)

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

تُرجِع السلسلة `s` بعد إلحاق المحرف `c` بها إذا كانت `s` لا تنتهي بـ `c`. [`String`](/ar/reference/data-types/string)

**أمثلة**

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

```sql title=Query theme={null}
SELECT appendTrailingCharIfAbsent('https://example.com', '/');
```

```response title=Response theme={null}
┌─appendTraili⋯.com', '/')─┐
│ https://example.com/     │
└──────────────────────────┘
```

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

أُضيف في: v22.11.0

يعيد قيمة نقطة رمز ASCII للحرف الأول من السلسلة `s` كقيمة من النوع `Int32`.

**الصيغة**

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

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

* `s` — مُدخل من النوع String. [`String`](/ar/reference/data-types/string)

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

تعيد نقطة الرمز ASCII للمحرف الأول. إذا كانت `s` فارغة، فالنتيجة هي `0`. وإذا لم يكن المحرف الأول محرف ASCII أو لم يكن جزءًا من نطاق Latin-1 Supplement في UTF-16، فالنتيجة غير معرّفة. [`Int32`](/ar/reference/data-types/int-uint)

**أمثلة**

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

```sql title=Query theme={null}
SELECT ascii('234')
```

```response title=Response theme={null}
┌─ascii('234')─┐
│           50 │
└──────────────┘
```

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

استُحدثت في: v25.6.0

تفك ترميز سلسلة [Base32](https://datatracker.ietf.org/doc/html/rfc4648#section-6) ‏(RFC 4648).
إذا لم تكن السلسلة مرمّزة بترميز Base32 صالح، فسيتم رفع استثناء.

**الصياغة**

```sql theme={null}
base32Decode(encoded)
```

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

* `encoded` — عمود أو ثابت من نوع String. [`String`](/ar/reference/data-types/string)

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

تعيد سلسلة تحتوي على القيمة بعد فك ترميز الوسيطة. [`String`](/ar/reference/data-types/string)

**أمثلة**

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

```sql title=Query theme={null}
SELECT base32Decode('IVXGG33EMVSA====');
```

```response title=Response theme={null}
┌─base32Decode('IVXGG33EMVSA====')─┐
│ Encoded                          │
└──────────────────────────────────┘
```

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

أُضيف في: v25.6.0

يُشفِّر سلسلة نصية باستخدام [Base32](https://datatracker.ietf.org/doc/html/rfc4648#section-6).

**الصيغة**

```sql theme={null}
base32Encode(plaintext)
```

**الوسائط**

* `plaintext` — النص الصريح المطلوب ترميزه. [`String`](/ar/reference/data-types/string)

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

تُرجِع سلسلة نصية تحتوي على القيمة المُرمَّزة للوسيطة. [`String`](/ar/reference/data-types/string) أو [`FixedString`](/ar/reference/data-types/fixedstring)

**أمثلة**

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

```sql title=Query theme={null}
SELECT base32Encode('Encoded')
```

```response title=Response theme={null}
┌─base32Encode('Encoded')─┐
│ IVXGG33EMVSA====        │
└─────────────────────────┘
```

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

تم تقديمه في: v22.7.0

يفك ترميز سلسلة [Base58](https://datatracker.ietf.org/doc/html/draft-msporny-base58-03#section-3).
إذا لم تكن السلسلة مرمّزة بترميز Base58 صالح، فسيُطرح استثناء.
يمكن تمرير وسيطة اختيارية ثانية هي `expected_size` لاختيار مفكّك ترميز محسّن بحجم ثابت.
القيم المدعومة حاليًا هي 32 و64. أما القيم الأخرى، فيُستخدم مفكّك الترميز العام.
عند اختيار مفكّك الترميز المحسّن، ولكن يتعذر فك ترميز المُدخل إلى هذا العدد من البايتات بالضبط،
تطرح الدالة استثناءً (أو تُرجع سلسلة فارغة في `tryBase58Decode`).

**البنية**

```sql theme={null}
base58Decode(encoded[, expected_size])
```

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

* `encoded` — عمود String أو ثابت لفك ترميزه. [`String`](/ar/reference/data-types/string)
* `expected_size` — اختياري. الحجم المتوقع بعد فك الترميز بالبايت. عندما تكون القيمة 32 أو 64، يُستخدم مفكّك ترميز مُحسَّن؛ وبالنسبة إلى القيم الأخرى، يُستخدم مفكّك الترميز العام. [`UInt8, UInt16, UInt32, or UInt64`](/ar/reference/data-types/int-uint)

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

تُرجع سلسلة تحتوي على القيمة الناتجة عن فك ترميز الوسيط. [`String`](/ar/reference/data-types/string)

**أمثلة**

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

```sql title=Query theme={null}
SELECT base58Decode('JxF12TrwUP45BMd');
```

```response title=Response theme={null}
┌─base58Decode⋯rwUP45BMd')─┐
│ Hello World              │
└──────────────────────────┘
```

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

أُضيف في: v22.7.0

يُشفِّر سلسلة نصية باستخدام ترميز [Base58](https://tools.ietf.org/id/draft-msporny-base58-01.html).

**الصيغة**

```sql theme={null}
base58Encode(plaintext)
```

**الوسائط**

* `plaintext` — النص الصريح المطلوب ترميزه. [`String`](/ar/reference/data-types/string)

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

تُرجع سلسلة نصية تحتوي على القيمة المُرمَّزة للوسيطة. [`String`](/ar/reference/data-types/string)

**أمثلة**

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

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

```response title=Response theme={null}
┌─base58Encode('ClickHouse')─┐
│ 4nhk8K7GHXf6zx             │
└────────────────────────────┘
```

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

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

يفك ترميز سلسلة من تنسيق [Base64](https://en.wikipedia.org/wiki/Base64) وفقًا لـ RFC 4648.
يُثير استثناءً عند حدوث خطأ.

**الصيغة**

```sql theme={null}
base64Decode(encoded)
```

**الأسماء المستعارة**: `FROM_BASE64`

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

* `encoded` — عمود أو ثابت من نوع String لفك ترميزه. إذا لم تكن السلسلة النصية مرمّزة بترميز Base64 ترميزًا صالحًا، فسيتم إطلاق استثناء. [`String`](/ar/reference/data-types/string)

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

يعيد السلسلة النصية بعد فك ترميزها. [`String`](/ar/reference/data-types/string)

**أمثلة**

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

```sql title=Query theme={null}
SELECT base64Decode('Y2xpY2tob3VzZQ==')
```

```response title=Response theme={null}
┌─base64Decode('Y2xpY2tob3VzZQ==')─┐
│ clickhouse                       │
└──────────────────────────────────┘
```

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

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

يُشفِّر سلسلة نصية بتمثيل [Base64](https://en.wikipedia.org/wiki/Base64)، وفقًا للمواصفة RFC 4648.

**الصياغة**

```sql theme={null}
base64Encode(plaintext)
```

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

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

* `plaintext` — عمود أو ثابت من النص الصريح لفك ترميزه. [`String`](/ar/reference/data-types/string)

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

تعيد سلسلة تحتوي على القيمة المُرمَّزة للوسيطة. [`String`](/ar/reference/data-types/string)

**أمثلة**

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

```sql title=Query theme={null}
SELECT base64Encode('clickhouse')
```

```response title=Response theme={null}
┌─base64Encode('clickhouse')─┐
│ Y2xpY2tob3VzZQ==           │
└────────────────────────────┘
```

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

أُضيف في: v24.6.0

يفك ترميز سلسلة من تمثيل [Base64](https://en.wikipedia.org/wiki/Base64) باستخدام أبجدية آمنة لعناوين URL، وفقًا للمعيار RFC 4648.
يؤدي إلى إطلاق استثناء في حال حدوث خطأ.

**الصيغة**

```sql theme={null}
base64URLDecode(encoded)
```

**الوسائط**

* `encoded` — عمود أو ثابت من نوع String لترميزه. إذا لم تكن السلسلة النصية مرمّزة بترميز Base64 ترميزًا صالحًا، فسيُطلق استثناء. [`String`](/ar/reference/data-types/string)

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

تعيد سلسلة نصية تحتوي على القيمة بعد فك ترميز الوسيطة. [`String`](/ar/reference/data-types/string)

**أمثلة**

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

```sql title=Query theme={null}
SELECT base64URLDecode('aHR0cHM6Ly9jbGlja2hvdXNlLmNvbQ')
```

```response title=Response theme={null}
┌─base64URLDecode('aHR0cHM6Ly9jbGlja2hvdXNlLmNvbQ')─┐
│ https://clickhouse.com                            │
└───────────────────────────────────────────────────┘
```

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

أُضيف في: v18.16.0

يُرمِّز سلسلة نصية باستخدام تمثيل [Base64](https://datatracker.ietf.org/doc/html/rfc4648#section-4) ‏(RFC 4648) وبالأبجدية الآمنة لعناوين URL.

**الصيغة**

```sql theme={null}
base64URLEncode(plaintext)
```

**الوسائط**

* `plaintext` — عمود أو ثابت يحتوي على نص صريح لترميزه. [`String`](/ar/reference/data-types/string)

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

تُرجع سلسلة تحتوي على القيمة المُرمَّزة للوسيط. [`String`](/ar/reference/data-types/string)

**أمثلة**

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

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

```response title=Response theme={null}
┌─base64URLEncode('https://clickhouse.com')─┐
│ aHR0cHM6Ly9jbGlja2hvdXNlLmNvbQ            │
└───────────────────────────────────────────┘
```

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

تم تقديمها في: v20.1.0

تستخرج الجزء الأخير من سلسلة نصية بعد آخر شرطة مائلة أو شرطة مائلة عكسية.
وغالبًا ما تُستخدم هذه الدالة لاستخراج اسم الملف من مسار.

**البنية**

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

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

* `expr` — تعبير نصي من النوع String. يجب تهريب محارف الشرطة المائلة العكسية. [`String`](/ar/reference/data-types/string)

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

تعيد الجزء من سلسلة الإدخال الواقع بعد آخر شرطة مائلة أو شرطة مائلة عكسية. إذا كانت سلسلة الإدخال تنتهي بشرطة مائلة أو شرطة مائلة عكسية، فستُعيد الدالة سلسلة نصية فارغة. وتُعيد السلسلة الأصلية إذا لم تحتوِ على أي شرطات مائلة أو شرطات مائلة عكسية. [`String`](/ar/reference/data-types/string)

**أمثلة**

**استخراج اسم الملف من مسار Unix**

```sql title=Query theme={null}
SELECT 'some/long/path/to/file' AS a, basename(a)
```

```response title=Response theme={null}
┌─a──────────────────────┬─basename('some/long/path/to/file')─┐
│ some/long/path/to/file │ file                               │
└────────────────────────┴────────────────────────────────────┘
```

**استخراج اسم الملف من مسار Windows**

```sql title=Query theme={null}
SELECT 'some\\long\\path\\to\\file' AS a, basename(a)
```

```response title=Response theme={null}
┌─a──────────────────────┬─basename('some\\long\\path\\to\\file')─┐
│ some\long\path\to\file │ file                                   │
└────────────────────────┴────────────────────────────────────────┘
```

**سلسلة نصية من دون فواصل المسارات**

```sql title=Query theme={null}
SELECT 'some-file-name' AS a, basename(a)
```

```response title=Response theme={null}
┌─a──────────────┬─basename('some-file-name')─┐
│ some-file-name │ some-file-name             │
└────────────────┴────────────────────────────┘
```

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

قُدِّمت في: v23.9.0

تحسب [مسافة هامينغ](https://en.wikipedia.org/wiki/Hamming_distance) بين سلسلتي بايتات.

**الصياغة**

```sql theme={null}
byteHammingDistance(s1, s2)
```

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

**الوسائط**

* `s1` — سلسلة الإدخال الأولى. [`String`](/ar/reference/data-types/string)
* `s2` — سلسلة الإدخال الثانية. [`String`](/ar/reference/data-types/string)

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

تعيد مسافة هامينغ بين السلسلتين. [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

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

```sql title=Query theme={null}
SELECT byteHammingDistance('karolin', 'kathrin')
```

```response title=Response theme={null}
┌─byteHammingDistance('karolin', 'kathrin')─┐
│                                         3 │
└───────────────────────────────────────────┘
```

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

أُضيف في: v26.3.0

يطبّق طيّ حالة Unicode على سلسلة UTF-8، ويحوّلها إلى صيغة مُطبَّعة شبيهة بالأحرف الصغيرة ومناسبة للمقارنات غير الحساسة لحالة الأحرف.

يطبّق طيّ حالة Unicode القياسي. ويحافظ على محارف التوافق التي لا تتأثر بطيّ الحالة
(مثل الأرقام الرومانية والأرقام داخل دوائر)، ولكن تجدر الإشارة إلى أن بعض الروابط الطباعية مثل `ﬃ` لا تزال تُفكَّك لأن طيّ حالة Unicode نفسه يوسّعها.

**الصياغة**

```sql theme={null}
caseFoldUTF8(str)
```

**الوسائط**

* `str` — سلسلة إدخال مرمَّزة بترميز UTF-8. [`String`](/ar/reference/data-types/string)

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

سلسلة UTF-8 بعد طيّ حالة الأحرف. [`String`](/ar/reference/data-types/string)

**أمثلة**

**الطيّ الأساسي لحالة الأحرف**

```sql title=Query theme={null}
SELECT caseFoldUTF8('Straße')
```

```response title=Response theme={null}
┌─caseFoldUTF8('Straße')─┐
│ strasse                 │
└─────────────────────────┘
```

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

أُضيف في: v25.2.0

يقارن سلسلتين نصيتين ترتيبًا معجميًا.

**الصيغة**

```sql theme={null}
compareSubstrings(s1, s2, s1_offset, s2_offset, num_bytes)
```

**الوسائط**

* `s1` — السلسلة الأولى للمقارنة. [`String`](/ar/reference/data-types/string)
* `s2` — السلسلة الثانية للمقارنة. [`String`](/ar/reference/data-types/string)
* `s1_offset` — الموضع في `s1` الذي تبدأ منه المقارنة (بدءًا من الصفر). [`UInt*`](/ar/reference/data-types/int-uint)
* `s2_offset` — الموضع في `s2` الذي تبدأ منه المقارنة (فهرس يبدأ من الصفر). [`UInt*`](/ar/reference/data-types/int-uint)
* `num_bytes` — الحد الأقصى لعدد البايتات المراد مقارنتها في كلتا السلسلتين. إذا كان `s1_offset` (أو `s2_offset`) + `num_bytes` يتجاوز نهاية سلسلة الإدخال، فسيُخفَّض `num_bytes` تبعًا لذلك. [`UInt*`](/ar/reference/data-types/int-uint)

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

يعيد ما يلي:

* `-1` إذا كانت `s1`\[`s1_offset` : `s1_offset` + `num_bytes`] \< `s2`\[`s2_offset` : `s2_offset` + `num_bytes`].
* `0` إذا كانت `s1`\[`s1_offset` : `s1_offset` + `num_bytes`] = `s2`\[`s2_offset` : `s2_offset` + `num_bytes`].
* `1` إذا كانت `s1`\[`s1_offset` : `s1_offset` + `num_bytes`] > `s2`\[`s2_offset` : `s2_offset` + `num_bytes`].
  [`Int8`](/ar/reference/data-types/int-uint)

**أمثلة**

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

```sql title=Query theme={null}
SELECT compareSubstrings('Saxony', 'Anglo-Saxon', 0, 6, 5) AS result
```

```response title=Response theme={null}
┌─result─┐
│      0 │
└────────┘
```

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

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

يضمّ المعاملات المُعطاة إلى بعضها.

تُحوَّل المعاملات التي لا تكون من النوعين [`String`](/ar/reference/data-types/string) أو [`FixedString`](/ar/reference/data-types/fixedstring) إلى سلاسل نصية باستخدام آلية التسلسل الافتراضية الخاصة بها.
ونظرًا إلى أن ذلك يخفّض الأداء، فلا يُنصح باستخدام معاملات ليست من نوع String/FixedString.

**البنية**

```sql theme={null}
concat([s1, s2, ...])
```

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

* `s1, s2, ...` — أي عدد من القيم من أي نوع. [`Any`](/ar/reference/data-types/index)

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

تعيد الدالة قيمة من نوع String ناتجة عن دمج الوسيطات. إذا كانت أي من الوسيطات `NULL`، فستُعيد الدالة `NULL`. وإذا لم تكن هناك أي وسيطات، فستُعيد سلسلة فارغة. [`Nullable(String)`](/ar/reference/data-types/nullable)

**أمثلة**

**دمج السلاسل النصية**

```sql title=Query theme={null}
SELECT concat('Hello, ', 'World!')
```

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

**دمج الأرقام**

```sql title=Query theme={null}
SELECT concat(42, 144)
```

```response title=Response theme={null}
┌─concat(42, 144)─┐
│ 42144           │
└─────────────────┘
```

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

تم تقديمها في: v1.1.0

مثل [`concat`](#concat)، لكنها تفترض أن `concat(s1, s2, ...) → sn` دالة حقنية،
أي إنها تُرجع قيماً مختلفة لوسائط مختلفة.

يمكن استخدامها لتحسين `GROUP BY`.

**الصيغة**

```sql theme={null}
concatAssumeInjective([s1, s2, ...])
```

**الوسائط**

* `s1, s2, ...` — أي عدد من القيم بأي نوع. [`String`](/ar/reference/data-types/string) أو [`FixedString`](/ar/reference/data-types/fixedstring)

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

تعيد السلسلة النصية المُنشأة بضم الوسائط. إذا كانت أي من قيم الوسائط هي `NULL`، فستعيد الدالة `NULL`. وإذا لم يتم تمرير أي وسائط، فستعيد سلسلة نصية فارغة. [`String`](/ar/reference/data-types/string)

**أمثلة**

**تحسين Group by**

```sql title=Query theme={null}
SELECT concat(key1, key2), sum(value) FROM key_val GROUP BY concatAssumeInjective(key1, key2)
```

```response title=Response theme={null}
┌─concat(key1, key2)─┬─sum(value)─┐
│ Hello, World!      │          3 │
│ Hello, World!      │          2 │
│ Hello, World       │          3 │
└────────────────────┴────────────┘
```

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

أُضيفت في: v22.12.0

تجمع السلاسل النصية المقدَّمة، مع الفصل بينها باستخدام الفاصل المحدد.

**الصيغة**

```sql theme={null}
concatWithSeparator(sep[, exp1, exp2, ...])
```

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

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

* `sep` — الفاصل المطلوب استخدامه. [`const String`](/ar/reference/data-types/string) أو [`const FixedString`](/ar/reference/data-types/fixedstring)
* `exp1, exp2, ...` — التعبير المراد ضمّه. تُحوَّل الوسيطات التي لا يكون نوعها `String` أو `FixedString` إلى سلاسل نصية باستخدام التسلسل الافتراضي لها. ونظرًا إلى أن هذا يخفّض الأداء، فلا يُنصح باستخدام وسيطات ليست من النوع `String`/`FixedString`. [`Any`](/ar/reference/data-types/index)

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

تعيد الدالة سلسلة `String` ناتجة عن ضمّ الوسيطات. إذا كانت أي من قيم الوسيطات تساوي `NULL`، فستُرجع الدالة `NULL`. [`String`](/ar/reference/data-types/string)

**أمثلة**

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

```sql title=Query theme={null}
SELECT concatWithSeparator('a', '1', '2', '3', '4')
```

```response title=Response theme={null}
┌─concatWithSeparator('a', '1', '2', '3', '4')─┐
│ 1a2a3a4                                      │
└──────────────────────────────────────────────┘
```

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

أُضيف في: v22.12.0

يشبه [`concatWithSeparator`](#concatWithSeparator)، لكنه يفترض أن `concatWithSeparator(sep[,exp1, exp2, ... ]) → result` دالة حقنية.
تُسمى الدالة حقنية إذا كانت تُرجِع نتائج مختلفة لوسائط مختلفة.

يمكن استخدامه لتحسين `GROUP BY`.

**البنية**

```sql theme={null}
concatWithSeparatorAssumeInjective(sep[, exp1, exp2, ... ])
```

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

* `sep` — الفاصل المراد استخدامه. [`const String`](/ar/reference/data-types/string) أو [`const FixedString`](/ar/reference/data-types/fixedstring)
* `exp1, exp2, ...` — التعبير المراد ربطه. تُحوَّل الوسيطات التي لا تكون من النوع `String` أو `FixedString` إلى سلاسل نصية باستخدام التسلسل الافتراضي الخاص بها. ونظرًا لأن هذا يخفّض الأداء، فلا يُنصح باستخدام وسيطات ليست من النوع `String`/`FixedString`. [`String`](/ar/reference/data-types/string) أو [`FixedString`](/ar/reference/data-types/fixedstring)

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

تعيد الدالة `String` الناتج عن ربط الوسيطات. إذا كانت أي من قيم الوسيطات `NULL`، فستُعيد الدالة `NULL`. [`String`](/ar/reference/data-types/string)

**أمثلة**

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

```sql title=Query theme={null}
CREATE TABLE user_data (
user_id UInt32,
first_name String,
last_name String,
score UInt32
)
ENGINE = MergeTree
ORDER BY tuple();

INSERT INTO user_data VALUES
(1, 'John', 'Doe', 100),
(2, 'Jane', 'Smith', 150),
(3, 'John', 'Wilson', 120),
(4, 'Jane', 'Smith', 90);

SELECT
    concatWithSeparatorAssumeInjective('-', first_name, last_name) as full_name,
    sum(score) as total_score
FROM user_data
GROUP BY concatWithSeparatorAssumeInjective('-', first_name, last_name);
```

```response title=Response theme={null}
┌─full_name───┬─total_score─┐
│ Jane-Smith  │         240 │
│ John-Doe    │         100 │
│ John-Wilson │         120 │
└─────────────┴─────────────┘
```

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

أُضيف في: v25.10.0

يحوّل الأرقام بين قواعد عددية مختلفة.

تُحوّل هذه الدالة رقماً من قاعدة عددية إلى أخرى. وهي تدعم القواعد من 2 إلى 36.
وبالنسبة إلى القواعد الأكبر من 10، تُستخدم الأحرف A-Z (دون حساسية لحالة الأحرف) لتمثيل الأرقام من 10 إلى 35.

هذه الدالة متوافقة مع الدالة CONV() في MySQL.

**الصيغة**

```sql theme={null}
conv(number, from_base, to_base)
```

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

* `number` — الرقم المراد تحويله. يمكن أن يكون سلسلة نصية أو نوعًا رقميًا. - `from_base` — الأساس الأصلي (2-36). يجب أن يكون عددًا صحيحًا. - `to_base` — الأساس الهدف (2-36). يجب أن يكون عددًا صحيحًا.

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

التمثيل النصي للرقم بالأساس الهدف.

**أمثلة**

**تحويل العدد العشري إلى الثنائي**

```sql title=Query theme={null}
SELECT conv('10', 10, 2)
```

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

**تحويل من السداسي عشري إلى العشري**

```sql title=Query theme={null}
SELECT conv('FF', 16, 10)
```

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

**التحويل باستخدام عدد سالب**

```sql title=Query theme={null}
SELECT conv('-1', 10, 16)
```

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

**التحويل من الثنائي إلى الثماني**

```sql title=Query theme={null}
SELECT conv('1010', 2, 8)
```

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

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

أُضيف في: v1.1.0

يُرجع السلسلة `s` بعد تحويل ترميزها من `from` إلى `to`.

**الصياغة**

```sql theme={null}
convertCharset(s, from, to)
```

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

* `s` — سلسلة الإدخال. [`String`](/ar/reference/data-types/string)
* `from` — ترميز الأحرف المصدري. [`String`](/ar/reference/data-types/string)
* `to` — ترميز الأحرف المستهدف. [`String`](/ar/reference/data-types/string)

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

تعيد السلسلة `s` بعد تحويل ترميزها من `from` إلى `to`. [`String`](/ar/reference/data-types/string)

**أمثلة**

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

```sql title=Query theme={null}
SELECT convertCharset('Café', 'UTF-8', 'ISO-8859-1');
```

```response title=Response theme={null}
┌─convertChars⋯SO-8859-1')─┐
│ Caf�                     │
└──────────────────────────┘
```

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

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

تحسب [مسافة Damerau-Levenshtein](https://en.wikipedia.org/wiki/Damerau%E2%80%93Levenshtein_distance) بين سلسلتين من البايتات.

**الصيغة**

```sql theme={null}
damerauLevenshteinDistance(s1, s2)
```

**الوسائط**

* `s1` — سلسلة الإدخال الأولى. [`String`](/ar/reference/data-types/string)
* `s2` — سلسلة الإدخال الثانية. [`String`](/ar/reference/data-types/string)

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

تُرجِع مسافة داميراو-ليفنشتاين بين السلسلتين. [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

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

```sql title=Query theme={null}
SELECT damerauLevenshteinDistance('clickhouse', 'mouse')
```

```response title=Response theme={null}
┌─damerauLevenshteinDistance('clickhouse', 'mouse')─┐
│                                                 6 │
└───────────────────────────────────────────────────┘
```

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

أُضيف في: v23.9.0

يفكّ ترميز كيانات HTML في سلسلة نصية إلى الأحرف المقابلة لها.

**الصيغة**

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

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

* `s` — سلسلة نصية من نوع String تحتوي على كيانات HTML المطلوب فك ترميزها. [`String`](/ar/reference/data-types/string)

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

تُعيد السلسلة النصية بعد فك ترميز كيانات HTML. [`String`](/ar/reference/data-types/string)

**أمثلة**

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

```sql title=Query theme={null}
SELECT decodeHTMLComponent('&lt;div&gt;Hello &amp; &quot;World&quot;&lt;/div&gt;')
```

```response title=Response theme={null}
┌─decodeHTMLComponent('&lt;div&gt;Hello &amp; &quot;World&quot;&lt;/div&gt;')─┐
│ <div>Hello & "World"</div>                                                  │
└─────────────────────────────────────────────────────────────────────────────┘
```

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

أُضيف في: v21.2.0

يفك ترميز كيانات XML في سلسلة نصية إلى الأحرف المقابلة لها.

**الصيغة**

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

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

* `s` — قيمة من النوع String تحتوي على كيانات XML المطلوب فك ترميزها. [`String`](/ar/reference/data-types/string)

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

تُرجِع السلسلة المُمرَّرة بعد فك ترميز كيانات XML. [`String`](/ar/reference/data-types/string)

**أمثلة**

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

```sql title=Query theme={null}
SELECT decodeXMLComponent('&lt;tag&gt;Hello &amp; World&lt;/tag&gt;')
```

```response title=Response theme={null}
┌─decodeXMLCom⋯;/tag&gt;')─┐
│ <tag>Hello & World</tag> │
└──────────────────────────┘
```

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

استُحدث في: v23.9.0

تحسب [مسافة التحرير](https://en.wikipedia.org/wiki/Edit_distance) بين سلسلتي بايت.

**الصيغة**

```sql theme={null}
editDistance(s1, s2)
```

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

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

* `s1` — سلسلة الإدخال الأولى. [`String`](/ar/reference/data-types/string)
* `s2` — سلسلة الإدخال الثانية. [`String`](/ar/reference/data-types/string)

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

تعرض مسافة التحرير بين السلسلتين. [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

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

```sql title=Query theme={null}
SELECT editDistance('clickhouse', 'mouse')
```

```response title=Response theme={null}
┌─editDistance('clickhouse', 'mouse')─┐
│                                   6 │
└─────────────────────────────────────┘
```

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

أُضيفت في: v24.6.0

تحسب [مسافة التحرير](https://en.wikipedia.org/wiki/Edit_distance) بين سلسلتين نصيتين بترميز UTF8.

**الصيغة**

```sql theme={null}
editDistanceUTF8(s1, s2)
```

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

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

* `s1` — سلسلة الإدخال الأولى. [`String`](/ar/reference/data-types/string)
* `s2` — سلسلة الإدخال الثانية. [`String`](/ar/reference/data-types/string)

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

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

**أمثلة**

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

```sql title=Query theme={null}
SELECT editDistanceUTF8('我是谁', '我是我')
```

```response title=Response theme={null}
┌─editDistanceUTF8('我是谁', '我是我')──┐
│                                   1 │
└─────────────────────────────────────┘
```

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

تمت إضافته في: v21.1.0

يُهرِّب الأحرف لإدراج السلسلة في عقدة نصية في XML أو في سمة.

**الصيغة**

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

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

* `s` — السلسلة النصية المطلوب تهريب محارفها. [`String`](/ar/reference/data-types/string)

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

تُعيد السلسلة النصية بعد تهريب محارفها. [`String`](/ar/reference/data-types/string)

**أمثلة**

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

```sql title=Query theme={null}
SELECT
    '<tag>Hello & "World"</tag>' AS original,
    encodeXMLComponent('<tag>Hello & "World"</tag>') AS xml_encoded;
```

```response title=Response theme={null}
┌─original───────────────────┬─xml_encoded──────────────────────────────────────────┐
│ <tag>Hello & "World"</tag> │ &lt;tag&gt;Hello &amp; &quot;World&quot;&lt;/tag&gt; │
└────────────────────────────┴──────────────────────────────────────────────────────┘
```

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

أُضيف في: v1.1.0

يتحقق مما إذا كانت السلسلة تنتهي باللاحقة المحددة.

**الصيغة**

```sql theme={null}
endsWith(s, suffix)
```

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

* `s` — السلسلة النصية المراد التحقق منها. [`String`](/ar/reference/data-types/string)
* `suffix` — اللاحقة المراد التحقق منها. [`String`](/ar/reference/data-types/string)

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

تعيد `1` إذا كانت `s` تنتهي بـ `suffix`، وإلا فتعيد `0`. [`UInt8`](/ar/reference/data-types/int-uint)

**أمثلة**

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

```sql title=Query theme={null}
SELECT endsWith('ClickHouse', 'House');
```

```response title=Response theme={null}
┌─endsWith('Cl⋯', 'House')─┐
│                        1 │
└──────────────────────────┘
```

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

أُضيف في: v25.10.0

يتحقق مما إذا كانت السلسلة تنتهي باللاحقة المقدَّمة مع تجاهل حالة الأحرف.

**الصيغة**

```sql theme={null}
endsWithCaseInsensitive(s, suffix)
```

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

* `s` — سلسلة المراد التحقق منها. [`String`](/ar/reference/data-types/string)
* `suffix` — اللاحقة غير الحساسة لحالة الأحرف المراد التحقق منها. [`String`](/ar/reference/data-types/string)

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

تعيد `1` إذا كانت `s` تنتهي باللاحقة `suffix` دون حساسية لحالة الأحرف، وإلا فتعيد `0`. [`UInt8`](/ar/reference/data-types/int-uint)

**أمثلة**

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

```sql title=Query theme={null}
SELECT endsWithCaseInsensitive('ClickHouse', 'HOUSE');
```

```response title=Response theme={null}
┌─endsWithCaseInsensitive('Cl⋯', 'HOUSE')─┐
│                                       1 │
└─────────────────────────────────────────┘
```

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

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

تُرجع ما إذا كانت السلسلة `s` تنتهي باللاحقة `suffix` مع تجاهل حالة الأحرف.
تفترض أن السلسلة تحتوي على نص صالح بترميز UTF-8.
إذا انتُهك هذا الافتراض، فلا يُطرَح أي استثناء وتكون النتيجة غير معرّفة.

**الصيغة**

```sql theme={null}
endsWithCaseInsensitiveUTF8(s, suffix)
```

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

* `s` — السلسلة النصية المطلوب التحقق منها. [`String`](/ar/reference/data-types/string)
* `suffix` — اللاحقة المطلوب التحقق منها دون مراعاة حالة الأحرف. [`String`](/ar/reference/data-types/string)

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

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

**أمثلة**

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

```sql title=Query theme={null}
SELECT endsWithCaseInsensitiveUTF8('данных', 'ых');
```

```response title=Response theme={null}
┌─endsWithCaseInsensitiveUTF8('данных', 'ых')─┐
│                                           1 │
└─────────────────────────────────────────────┘
```

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

استُحدثت في: v23.8.0

تُرجع ما إذا كانت السلسلة `s` تنتهي باللاحقة `suffix`.
تفترض أن السلسلة تحتوي على نص صحيح بترميز UTF-8.
إذا لم يصح هذا الافتراض، فلا يُطرَح أي استثناء وتكون النتيجة غير معرّفة.

**الصيغة**

```sql theme={null}
endsWithUTF8(s, suffix)
```

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

* `s` — السلسلة النصية المطلوب التحقق منها. [`String`](/ar/reference/data-types/string)
* `suffix` — اللاحقة المطلوب التحقق منها. [`String`](/ar/reference/data-types/string)

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

تُعيد `1` إذا كانت `s` تنتهي بـ `suffix`، وإلا فتُعيد `0`. [`UInt8`](/ar/reference/data-types/int-uint)

**أمثلة**

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

```sql title=Query theme={null}
SELECT endsWithUTF8('данных', 'ых');
```

```response title=Response theme={null}
┌─endsWithUTF8('данных', 'ых')─┐
│                            1 │
└──────────────────────────────┘
```

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

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

تستخرج المحتوى النصي من HTML أو XHTML.

تزيل هذه الدالة وسوم HTML والتعليقات وعناصر script/style، ولا تُبقي إلا المحتوى النصي. وهي تتعامل مع:

* إزالة جميع وسوم HTML/XML
* إزالة التعليقات (`{/* */}`)
* إزالة عناصر script وstyle مع محتواها
* معالجة مقاطع CDATA (تُنسخ حرفيًا كما هي)
* التعامل الصحيح مع المسافات البيضاء وتوحيدها

ملاحظة: لا يتم فك ترميز كيانات HTML، ويجب معالجتها بدالة منفصلة إذا لزم الأمر.

**الصيغة**

```sql theme={null}
extractTextFromHTML(html)
```

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

* `html` — `String` يحتوي على محتوى HTML لاستخراج النص منه. [`String`](/ar/reference/data-types/string)

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

يعيد محتوى النص المستخرج بعد توحيد المسافات البيضاء. [`String`](/ar/reference/data-types/string)

**أمثلة**

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

```sql title=Query theme={null}
SELECT extractTextFromHTML('
<html>
    <head><title>Page Title</title></head>
    <body>
        <p>Hello <b>World</b>!</p>
        <script>alert("test");</script>
        <!-- comment -->
    </body>
</html>
');
```

```response title=Response theme={null}
┌─extractTextFromHTML('<html><head>...')─┐
│ Page Title Hello World!                │
└────────────────────────────────────────┘
```

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

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

تُرجع السطر الأول من سلسلة نصية متعددة الأسطر.

**الصيغة**

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

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

* `s` — سلسلة الإدخال. [`String`](/ar/reference/data-types/string)

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

يعيد السطر الأول من سلسلة الإدخال، أو السلسلة كاملةً إذا لم تكن هناك فواصل أسطر. [`String`](/ar/reference/data-types/string)

**أمثلة**

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

```sql title=Query theme={null}
SELECT firstLine('foo\\nbar\\nbaz')
```

```response title=Response theme={null}
┌─firstLine('foo\nbar\nbaz')─┐
│ foo                        │
└────────────────────────────┘
```

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

استُحدث في: v24.1.0

يعيد التمثيل بصيغة Unicode ‏(UTF-8) (خوارزمية ToUnicode) لاسم نطاق وفقًا لآلية [Internationalized Domain Names in Applications](https://en.wikipedia.org/wiki/Internationalized_domain_name#Internationalizing_Domain_Names_in_Applications) ‏(IDNA).
في حال حدوث خطأ (على سبيل المثال، إذا كانت قيمة الإدخال غير صالحة)، تُعاد سلسلة الإدخال.
لاحظ أن التكرار في تطبيق كلٍّ من [`idnaEncode()`](#idnaEncode) و[`idnaDecode()`](#idnaDecode) لا يعيد بالضرورة السلسلة الأصلية بسبب تسوية حالة الأحرف.

**الصيغة**

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

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

* `s` — سلسلة الإدخال. [`String`](/ar/reference/data-types/string)

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

يعيد تمثيل Unicode ‏(UTF-8) لسلسلة الإدخال وفقًا لآلية IDNA لقيمة الإدخال. [`String`](/ar/reference/data-types/string)

**أمثلة**

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

```sql title=Query theme={null}
SELECT idnaDecode('xn--strae-oqa.xn--mnchen-3ya.de')
```

```response title=Response theme={null}
┌─idnaDecode('xn--strae-oqa.xn--mnchen-3ya.de')─┐
│ straße.münchen.de                             │
└───────────────────────────────────────────────┘
```

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

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

يعيد التمثيل بصيغة ASCII (خوارزمية ToASCII) لاسم نطاق وفقًا لآلية [أسماء النطاقات الدولية في التطبيقات](https://en.wikipedia.org/wiki/Internationalized_domain_name#Internationalizing_Domain_Names_in_Applications) ‏(IDNA).
يجب أن تكون سلسلة الإدخال بترميز UTF وقابلة للتحويل إلى سلسلة ASCII، وإلا فسيتم طرح استثناء.

<Note>
  لا يُجرى أي فك لترميز النسبة المئوية أو إزالة لعلامات الجدولة أو المسافات أو محارف التحكّم.
</Note>

**الصيغة**

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

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

* `s` — سلسلة الإدخال. [`String`](/ar/reference/data-types/string)

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

تُرجع تمثيلًا بصيغة ASCII لسلسلة الإدخال وفقًا لآلية IDNA الخاصة بقيمة الإدخال. [`String`](/ar/reference/data-types/string)

**أمثلة**

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

```sql title=Query theme={null}
SELECT idnaEncode('straße.münchen.de')
```

```response title=Response theme={null}
┌─idnaEncode('straße.münchen.de')─────┐
│ xn--strae-oqa.xn--mnchen-3ya.de     │
└─────────────────────────────────────┘
```

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

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

تحوّل الحرف الأول من كل كلمة إلى حرف كبير، وتحول بقية الأحرف إلى أحرف صغيرة.
والكلمات هي سلاسل من الأحرف والأرقام تفصل بينها محارف غير أبجدية رقمية.

<Note>
  لأن `initcap` يحوّل فقط الحرف الأول من كل كلمة إلى حرف كبير، فقد تلاحظ سلوكًا غير متوقع في الكلمات التي تحتوي على فاصلات عليا أو أحرف كبيرة.
  هذا سلوك معروف، ولا توجد حاليًا أي خطط لإصلاحه.
</Note>

**الصيغة**

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

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

* `s` — سلسلة الإدخال. [`String`](/ar/reference/data-types/string)

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

تعيد `s` بعد تحويل الحرف الأول من كل كلمة إلى حرف كبير. [`String`](/ar/reference/data-types/string)

**أمثلة**

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

```sql title=Query theme={null}
SELECT initcap('building for fast')
```

```response title=Response theme={null}
┌─initcap('building for fast')─┐
│ Building For Fast            │
└──────────────────────────────┘
```

**مثال على سلوك معروف للكلمات التي تحتوي على فاصلات عليا أو أحرف كبيرة**

```sql title=Query theme={null}
SELECT initcap('John''s cat won''t eat.');
```

```response title=Response theme={null}
┌─initcap('Joh⋯n\'t eat.')─┐
│ John'S Cat Won'T Eat.    │
└──────────────────────────┘
```

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

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

مثل [`initcap`](#initcap)، تحوّل `initcapUTF8` الحرف الأول من كل كلمة إلى حرف كبير وباقي الأحرف إلى أحرف صغيرة.
يفترض أن السلسلة تحتوي على نص صالح بترميز UTF-8.
إذا لم يتحقق هذا الافتراض، فلا يُطرَح أي استثناء وتكون النتيجة غير معرّفة.

<Note>
  لا تكتشف هذه الدالة اللغة؛ فعلى سبيل المثال، قد لا تكون النتيجة صحيحة تمامًا في التركية (i/İ مقابل i/I).
  إذا اختلف طول تسلسل بايتات UTF-8 بين الحالتين الكبيرة والصغيرة لنقطة ترميز، فقد تكون النتيجة غير صحيحة لهذه النقطة الترميزية.
</Note>

**الصيغة**

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

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

* `s` — السلسلة النصية المُدخلة. [`String`](/ar/reference/data-types/string)

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

يعيد `s` بعد تحويل الحرف الأول من كل كلمة إلى حرف كبير. [`String`](/ar/reference/data-types/string)

**أمثلة**

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

```sql title=Query theme={null}
SELECT initcapUTF8('не тормозит')
```

```response title=Response theme={null}
┌─initcapUTF8('не тормозит')─┐
│ Не Тормозит                │
└────────────────────────────┘
```

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

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

تُرجع 1 إذا كانت قيمة `String` أو `FixedString` المُدخلة تحتوي فقط على بايتات ASCII ‏(0x00–0x7F)، وإلا فتُرجع 0. وهي مُحسّنة للحالة الإيجابية (أي عندما يكون المُدخل ASCII صالحًا).

**الصيغة**

```sql theme={null}
isValidASCII(str)
```

**اسم بديل**: `isASCII`

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

* لا شيء.

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

**أمثلة**

**isValidASCII**

```sql title=Query theme={null}
SELECT isValidASCII('hello') AS is_ascii, isValidASCII('你好') AS is_not_ascii
```

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

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

استُحدث في: v20.1.0

يتحقق مما إذا كانت مجموعة البايتات تمثل نصًا صحيحًا بترميز UTF-8.

**الصيغة**

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

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

* `s` — السلسلة المطلوب التحقّق من صلاحية ترميزها بتنسيق UTF-8. [`String`](/ar/reference/data-types/string)

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

تُرجِع `1` إذا كانت مجموعة البايتات تُشكّل نصًا صالحًا بترميز UTF-8، وإلا فتُرجِع `0`. [`UInt8`](/ar/reference/data-types/int-uint)

**أمثلة**

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

```sql title=Query theme={null}
SELECT isValidUTF8('\\xc3\\xb1') AS valid, isValidUTF8('\\xc3\\x28') AS invalid
```

```response title=Response theme={null}
┌─valid─┬─invalid─┐
│     1 │       0 │
└───────┴─────────┘
```

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

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

يحسب [تشابه Jaro](https://en.wikipedia.org/wiki/Jaro%E2%80%93Winkler_distance#Jaro_similarity) بين سلسلتين من البايتات.

**الصيغة**

```sql theme={null}
jaroSimilarity(s1, s2)
```

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

* `s1` — سلسلة الإدخال الأولى. [`String`](/ar/reference/data-types/string)
* `s2` — سلسلة الإدخال الثانية. [`String`](/ar/reference/data-types/string)

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

تُرجِع قيمة تشابه Jaro بين السلسلتين. [`Float64`](/ar/reference/data-types/float)

**أمثلة**

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

```sql title=Query theme={null}
SELECT jaroSimilarity('clickhouse', 'click')
```

```response title=Response theme={null}
┌─jaroSimilarity('clickhouse', 'click')─┐
│                    0.8333333333333333 │
└───────────────────────────────────────┘
```

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

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

تحسب [تشابه Jaro-Winkler](https://en.wikipedia.org/wiki/Jaro%E2%80%93Winkler_distance) بين سلسلتي بايتات.

**الصيغة**

```sql theme={null}
jaroWinklerSimilarity(s1, s2)
```

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

* `s1` — سلسلة الإدخال الأولى. [`String`](/ar/reference/data-types/string)
* `s2` — سلسلة الإدخال الثانية. [`String`](/ar/reference/data-types/string)

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

تعيد قيمة تشابه Jaro-Winkler بين السلسلتين. [`Float64`](/ar/reference/data-types/float)

**أمثلة**

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

```sql title=Query theme={null}
SELECT jaroWinklerSimilarity('clickhouse', 'click')
```

```response title=Response theme={null}
┌─jaroWinklerSimilarity('clickhouse', 'click')─┐
│                           0.8999999999999999 │
└──────────────────────────────────────────────┘
```

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

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

تُرجع سلسلة فرعية من السلسلة `s` وفق قيمة `offset` المحددة، بدءًا من اليسار.

**الصيغة**

```sql theme={null}
left(s, offset)
```

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

* `s` — السلسلة التي تُستخرج منها سلسلة فرعية. [`String`](/ar/reference/data-types/string) أو [`FixedString`](/ar/reference/data-types/fixedstring)
* `offset` — عدد بايتات الإزاحة. [`(U)Int*`](/ar/reference/data-types/int-uint)

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

يعيد:

* إذا كانت قيمة `offset` موجبة، فستكون النتيجة سلسلة فرعية من `s` بطول `offset` بايتًا، تبدأ من يسار السلسلة.
* إذا كانت قيمة `offset` سالبة، فستكون النتيجة سلسلة فرعية من `s` بطول `length(s) - |offset|` بايتًا، تبدأ من يسار السلسلة.
* سلسلة فارغة إذا كانت `length` تساوي `0`.
  [`String`](/ar/reference/data-types/string)

**أمثلة**

**إزاحة موجبة**

```sql title=Query theme={null}
SELECT left('Hello World', 5)
```

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

**الإزاحة السالبة**

```sql title=Query theme={null}
SELECT left('Hello World', -6)
```

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

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

تم تقديمه في: v21.8.0

يضيف حشوة إلى يسار سلسلة نصية باستخدام مسافات أو سلسلة نصية محددة (وتُكرَّر عند الحاجة) حتى يصل طول السلسلة الناتجة إلى قيمة `length` المحددة.

**الصيغة**

```sql theme={null}
leftPad(string, length[, pad_string])
```

**اسم بديل**: `lpad`

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

* `string` — سلسلة الإدخال المطلوب حشوها. [`String`](/ar/reference/data-types/string)
* `length` — طول السلسلة الناتجة. إذا كانت القيمة أصغر من طول سلسلة الإدخال، فستُختصر سلسلة الإدخال إلى `length` حرفًا. [`(U)Int*`](/ar/reference/data-types/int-uint)
* `pad_string` — اختياري. السلسلة المستخدمة لحشو سلسلة الإدخال. إذا لم تُحدَّد، فستُحشى سلسلة الإدخال بمسافات. [`String`](/ar/reference/data-types/string)

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

تعيد سلسلة محشوة من اليسار بالطول المحدد. [`String`](/ar/reference/data-types/string)

**أمثلة**

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

```sql title=Query theme={null}
SELECT leftPad('abc', 7, '*'), leftPad('def', 7)
```

```response title=Response theme={null}
┌─leftPad('abc', 7, '*')─┬─leftPad('def', 7)─┐
│ ****abc                │     def           │
└────────────────────────┴───────────────────┘
```

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

أُضيف في: v21.8.0

يملأ سلسلة UTF8 النصية من اليسار بمسافات أو بسلسلة محددة (عدة مرات عند الحاجة) حتى يصل طول السلسلة الناتجة إلى الطول المحدد.
وعلى خلاف [`leftPad`](#leftPad) الذي يقيس طول السلسلة بالبايتات، يُقاس طول السلسلة بنقاط الترميز.

**الصيغة**

```sql theme={null}
leftPadUTF8(string, length[, pad_string])
```

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

* `string` — سلسلة الإدخال المطلوب حشوها. [`String`](/ar/reference/data-types/string)
* `length` — طول السلسلة الناتجة. إذا كانت القيمة أصغر من طول سلسلة الإدخال، فستُقصَّر سلسلة الإدخال إلى `length` حرفًا. [`(U)Int*`](/ar/reference/data-types/int-uint)
* `pad_string` — اختياري. السلسلة المستخدمة لحشو سلسلة الإدخال. إذا لم يتم تحديدها، فسيُحشَى الإدخال بمسافات. [`String`](/ar/reference/data-types/string)

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

يعيد سلسلة محشوة من اليسار بالطول المحدد. [`String`](/ar/reference/data-types/string)

**أمثلة**

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

```sql title=Query theme={null}
SELECT leftPadUTF8('абвг', 7, '*'), leftPadUTF8('дежз', 7)
```

```response title=Response theme={null}
┌─leftPadUTF8('абвг', 7, '*')─┬─leftPadUTF8('дежз', 7)─┐
│ ***абвг                     │    дежз                │
└─────────────────────────────┴────────────────────────┘
```

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

أُضيف في: v22.1.0

يعيد سلسلة فرعية من السلسلة النصية `s` المرمّزة بترميز UTF-8 باستخدام `offset` محدد يبدأ من اليسار.

**الصيغة**

```sql theme={null}
leftUTF8(s, offset)
```

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

* `s` — السلسلة النصية المرمّزة بترميز UTF-8 المراد استخراج مقطع فرعي منها. [`String`](/ar/reference/data-types/string) أو [`FixedString`](/ar/reference/data-types/fixedstring)
* `offset` — عدد بايتات الإزاحة. [`(U)Int*`](/ar/reference/data-types/int-uint)

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

يعيد:

* إذا كانت قيمة `offset` موجبة، يُعاد مقطع فرعي من `s` بطول `offset` بايتًا، بدءًا من يسار السلسلة النصية.\n"
* إذا كانت قيمة `offset` سالبة، يُعاد مقطع فرعي من `s` بطول `length(s) - |offset|` بايتًا، بدءًا من يسار السلسلة النصية.\n"
* سلسلة نصية فارغة إذا كانت `length` تساوي 0.
  [`String`](/ar/reference/data-types/string)

**أمثلة**

**إزاحة موجبة**

```sql title=Query theme={null}
SELECT leftUTF8('Привет', 4)
```

```response title=Response theme={null}
Прив
```

**الإزاحة السالبة**

```sql title=Query theme={null}
SELECT leftUTF8('Привет', -4)
```

```response title=Response theme={null}
Пр
```

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

تم تقديمها في: v1.1.0

تعيد طول سلسلة نصية بعدد نقاط الترميز في Unicode بدلًا من البايتات أو الأحرف.
وتفترض أن السلسلة تحتوي على نص صالح مُرمَّز بترميز UTF-8.
إذا لم يتحقق هذا الافتراض، فلا يُطرح أي استثناء وتكون النتيجة غير معرّفة.

**الصيغة**

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

**الأسماء البديلة**: `CHARACTER_LENGTH`, `CHAR_LENGTH`

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

* `s` — `String` يحتوي على نص صالح مُرمَّز بترميز UTF-8. [`String`](/ar/reference/data-types/string)

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

طول السلسلة `s` محسوبًا بعدد نقاط الترميز في Unicode. [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

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

```sql title=Query theme={null}
SELECT lengthUTF8('Здравствуй, мир!')
```

```response title=Response theme={null}
┌─lengthUTF8('Здравствуй, мир!')─┐
│                             16 │
└────────────────────────────────┘
```

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

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

يحوّل سلسلة ASCII إلى أحرف صغيرة.

**الصيغة**

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

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

**الوسائط**

* `s` — سلسلة نصية لتحويلها إلى أحرف صغيرة. [`String`](/ar/reference/data-types/string)

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

تُرجِع سلسلة نصية من `s` بأحرف صغيرة. [`String`](/ar/reference/data-types/string)

**أمثلة**

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

```sql title=Query theme={null}
SELECT lower('CLICKHOUSE')
```

```response title=Response theme={null}
┌─lower('CLICKHOUSE')─┐
│ clickhouse          │
└─────────────────────┘
```

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

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

تُحوِّل سلسلة نصية إلى أحرف صغيرة، على افتراض أن السلسلة تحتوي على نص صالح مُرمَّز بترميز UTF-8. وإذا لم يتحقق هذا الافتراض، فلا يتم طرح أي استثناء وتكون النتيجة غير معرّفة.

**البنية**

```sql theme={null}
lowerUTF8(input)
```

**الوسائط**

* `input` — السلسلة النصية المُدخلة المطلوب تحويلها إلى أحرف صغيرة. [`String`](/ar/reference/data-types/string)

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

تعيد سلسلة نصية بأحرف صغيرة. [`String`](/ar/reference/data-types/string)

**أمثلة**

**الأول**

```sql title=Query theme={null}
SELECT lowerUTF8('München') as Lowerutf8;
```

```response title=Response theme={null}
münchen
```

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

قُدِّمت في: v26.3.0

تُستخدم هذه الدالة للفرز الطبيعي.

**البنية**

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

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

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

* `s` — سلسلة نصية لتحويلها إلى مفتاح فرز طبيعي. [`String`](/ar/reference/data-types/string)

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

يعيد سلسلة نصية لمفتاح فرز طبيعي من `s`. [`String`](/ar/reference/data-types/string)

**أمثلة**

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

```sql title=Query theme={null}
SELECT s FROM t ORDER BY naturalSortKey(s)
```

```response title=Response theme={null}
┌─s───┐
│ a1  │
| a02 │
└─────┘
```

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

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

تُطبِّع سلسلة UTF-8 وفقًا لـ [صيغة التطبيع NFC](https://en.wikipedia.org/wiki/Unicode_equivalence#Normal_forms).

**البنية**

```sql theme={null}
normalizeUTF8NFC(str)
```

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

* `str` — سلسلة الإدخال المرمّزة بترميز UTF-8. [`String`](/ar/reference/data-types/string)

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

تعيد الصيغة المُطبَّعة وفق NFC لسلسلة UTF-8. [`String`](/ar/reference/data-types/string)

**أمثلة**

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

```sql title=Query theme={null}
SELECT
'é' AS original, -- e + combining acute accent (U+0065 + U+0301)
length(original),
normalizeUTF8NFC('é') AS nfc_normalized, -- é (U+00E9)
length(nfc_normalized);
```

```response title=Response theme={null}
┌─original─┬─length(original)─┬─nfc_normalized─┬─length(nfc_normalized)─┐
│ é        │                2 │ é              │                      2 │
└──────────┴──────────────────┴────────────────┴────────────────────────┘
```

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

تم تقديمها في: v21.11.0

تُطبِّع سلسلة نصية بترميز UTF-8 وفقًا لـ [صيغة التطبيع NFD](https://en.wikipedia.org/wiki/Unicode_equivalence#Normal_forms).

**الصيغة**

```sql theme={null}
normalizeUTF8NFD(str)
```

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

* `str` — سلسلة الإدخال المرمّزة بترميز UTF-8. [`String`](/ar/reference/data-types/string)

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

تعيد الصيغة المعيارية NFD للسلسلة المرمّزة بترميز UTF-8. [`String`](/ar/reference/data-types/string)

**أمثلة**

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

```sql title=Query theme={null}
SELECT
    'é' AS original, -- é (U+00E9)
    length(original),
    normalizeUTF8NFD('é') AS nfd_normalized, -- e + combining acute (U+0065 + U+0301)
    length(nfd_normalized);
```

```response title=Response theme={null}
┌─original─┬─length(original)─┬─nfd_normalized─┬─length(nfd_normalized)─┐
│ é        │                2 │ é              │                      3 │
└──────────┴──────────────────┴────────────────┴────────────────────────┘
```

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

أُضيف في: v21.11.0

يُطبِّع سلسلة نصية بترميز UTF-8 وفقًا لـ[صيغة التطبيع NFKC](https://en.wikipedia.org/wiki/Unicode_equivalence#Normal_forms).

**البنية**

```sql theme={null}
normalizeUTF8NFKC(str)
```

**الوسائط**

* `str` — السلسلة النصية المُدخلة والمشفَّرة بترميز UTF-8. [`String`](/ar/reference/data-types/string)

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

تُعيد الصيغة المعيارية NFKC لسلسلة UTF-8 النصية. [`String`](/ar/reference/data-types/string)

**أمثلة**

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

```sql title=Query theme={null}
SELECT
    '① ② ③' AS original,                            -- Circled number characters
    normalizeUTF8NFKC('① ② ③') AS nfkc_normalized;  -- Converts to 1 2 3
```

```response title=Response theme={null}
┌─original─┬─nfkc_normalized─┐
│ ① ② ③  │ 1 2 3           │
└──────────┴─────────────────┘
```

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

أُضيف في: v26.3.0

يُطبِّع سلسلة UTF-8 وفقًا لـ [صيغة التطبيع NFKC\_Casefold](https://unicode.org/reports/tr44/#NFKC_Casefold)، إذ يطبّق تطبيع NFKC ثم يجري طيّ حالة الأحرف.
وهذا مفيد لمطابقة المعرّفات دون مراعاة حالة الأحرف.

**البنية**

```sql theme={null}
normalizeUTF8NFKCCasefold(str)
```

**الوسائط**

* `str` — سلسلة الإدخال المرمّزة بترميز UTF-8. [`String`](/ar/reference/data-types/string)

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

تُرجع الشكل المعياري NFKC\_Casefold لسلسلة UTF-8. [`String`](/ar/reference/data-types/string)

**أمثلة**

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

```sql title=Query theme={null}
SELECT
    'Ä ① Hello' AS original,
    normalizeUTF8NFKCCasefold('Ä ① Hello') AS nfkc_cf_normalized;
```

```response title=Response theme={null}
┌─original───┬─nfkc_cf_normalized─┐
│ Ä ① Hello │ ä 1 hello           │
└────────────┴────────────────────┘
```

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

أُضيف في: v21.11.0

يُطبِّع سلسلة UTF-8 وفق [صيغة التطبيع NFKD](https://en.wikipedia.org/wiki/Unicode_equivalence#Normal_forms).

**البنية**

```sql theme={null}
normalizeUTF8NFKD(str)
```

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

* `str` — سلسلة إدخال مرمّزة بترميز UTF-8. [`سلسلة`](/ar/reference/data-types/string)

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

تُرجع الشكل المُطبَّع وفق NFKD لسلسلة UTF-8. [`سلسلة`](/ar/reference/data-types/string)

**أمثلة**

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

```sql title=Query theme={null}
SELECT
    'H₂O²' AS original,                            -- H + subscript 2 + O + superscript 2
    normalizeUTF8NFKD('H₂O²') AS nfkd_normalized;  -- Converts to H 2 O 2
```

```response title=Response theme={null}
┌─original─┬─nfkd_normalized─┐
│ H₂O²     │ H2O2            │
└──────────┴─────────────────┘
```

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

أُضيف في: v24.1.0

يعيد النص الصريح المُرمَّز بـ UTF8 لسلسلة مُرمَّزة بترميز [Punycode](https://en.wikipedia.org/wiki/Punycode).
إذا لم تُعطَ سلسلة صالحة مُرمَّزة بترميز Punycode، فسيتم طرح استثناء.

**الصيغة**

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

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

* `s` — سلسلة مرمّزة بـ Punycode. [`String`](/ar/reference/data-types/string)

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

تعيد النص العادي لقيمة الإدخال. [`String`](/ar/reference/data-types/string)

**أمثلة**

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

```sql title=Query theme={null}
SELECT punycodeDecode('Mnchen-3ya')
```

```response title=Response theme={null}
┌─punycodeDecode('Mnchen-3ya')─┐
│ München                      │
└──────────────────────────────┘
```

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

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

يعيد تمثيل سلسلة نصية بتنسيق [Punycode](https://en.wikipedia.org/wiki/Punycode).
يجب أن تكون السلسلة النصية مُرمَّزة بترميز UTF8، وإلا فسيكون السلوك غير محدد.

**الصياغة**

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

**الوسائط**

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

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

تعرض تمثيل Punycode لقيمة الإدخال. [`String`](/ar/reference/data-types/string)

**أمثلة**

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

```sql title=Query theme={null}
SELECT punycodeEncode('München')
```

```response title=Response theme={null}
┌─punycodeEncode('München')─┐
│ Mnchen-3ya                │
└───────────────────────────┘
```

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

أُضيف في: v23.2.0

يستخرج أول سلسلة نصية في `haystack` تطابق نمط regexp وتتوافق مع فهرس مجموعة regex.

**الصيغة**

```sql theme={null}
regexpExtract(haystack, pattern[, index])
```

**الأسماء المستعارة**: `REGEXP_EXTRACT`, `REGEXP_SUBSTR`

**الوسائط**

* `haystack` — String، السلسلة التي ستتم فيها مطابقة نمط regexp. [`String`](/ar/reference/data-types/string)
* `pattern` — String، تعبير regexp. قد يحتوي `pattern` على عدة مجموعات regexp، ويحدد `index` مجموعة regex المطلوب استخراجها. تشير القيمة `0` إلى مطابقة التعبير النمطي بالكامل. [`const String`](/ar/reference/data-types/string)
* `index` — اختياري. عدد صحيح غير سالب يحدد مجموعة regex المطلوب استخراجها. القيمة الافتراضية هي `1` إذا كان `pattern` يحتوي على مجموعة ملتقطة واحدة على الأقل، و`0` (المطابقة بالكامل) إذا لم يكن `pattern` يحتوي على أي مجموعة ملتقطة. [`(U)Int*`](/ar/reference/data-types/int-uint)

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

يعيد سلسلة مطابِقة [`String`](/ar/reference/data-types/string)

**أمثلة**

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

```sql title=Query theme={null}
SELECT
    regexpExtract('100-200', '(\\d+)-(\\d+)', 1),
    regexpExtract('100-200', '(\\d+)-(\\d+)', 2),
    regexpExtract('100-200', '(\\d+)-(\\d+)', 0),
    regexpExtract('100-200', '(\\d+)-(\\d+)'),
    regexpExtract('100-200', '\\d+');
```

```response title=Response theme={null}
┌─regexpExtract('100-200', '(\\d+)-(\\d+)', 1)─┬─regexpExtract('100-200', '(\\d+)-(\\d+)', 2)─┬─regexpExtract('100-200', '(\\d+)-(\\d+)', 0)─┬─regexpExtract('100-200', '(\\d+)-(\\d+)')─┬─regexpExtract('100-200', '\\d+')─┐
│ 100                                          │ 200                                          │ 100-200                                      │ 100                                       │ 100                              │
└──────────────────────────────────────────────┴──────────────────────────────────────────────┴──────────────────────────────────────────────┴───────────────────────────────────────────┴──────────────────────────────────┘
```

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

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

تعيد موضع البايت (ابتداءً من 1) للمطابقة رقم `occurrence` لـ `pattern` داخل `haystack`، مع بدء البحث من موضع البايت `position`.

إذا كانت `return_option` تساوي 0 (الافتراضي)، فسيُعاد موضع أول بايت في المطابقة. وإذا كانت تساوي 1، فسيُعاد موضع أول بايت *بعد* المطابقة.

إذا كانت `subexpression` أكبر من 0، فسيُعاد موضع مجموعة الالتقاط المقابلة بدلًا من المطابقة بأكملها.

تعيد 0 إذا لم يُعثر على أي مطابقة، أو إذا لم تشارك مجموعة الالتقاط المطلوبة في المطابقة.

يُوفَّر هذا للتوافق مع `regexp_instr` في PostgreSQL (وهو متاح أيضًا تحت هذا alias). لاحظ أن المواضع هنا تعتمد على البايتات، بما يتوافق مع دوال Regex الأخرى في ClickHouse؛ بينما يعتمد `regexp_instr` في PostgreSQL على المحارف.

**البنية**

```sql theme={null}
regexpPosition(haystack, pattern[, position[, occurrence[, return_option[, flags[, subexpression]]]]])
```

**الأسماء البديلة**: `regexpInstr`, `regexp_instr`

**الوسائط**

* `haystack` — السلسلة المراد البحث فيها. [`String`](/ar/reference/data-types/string)
* `pattern` — نمط التعبير النمطي. [`const String`](/ar/reference/data-types/string)
* `position` — اختياري. موضع البايت المعتمد على 1 لبدء البحث. القيمة الافتراضية: 1. [`(U)Int*`](/ar/reference/data-types/int-uint)
* `occurrence` — اختياري. يحدد أي تطابق يجب إرجاعه. القيمة الافتراضية: 1. [`(U)Int*`](/ar/reference/data-types/int-uint)
* `return_option` — اختياري. تُرجع القيمة 0 موضع بداية التطابق، وتُرجع القيمة 1 الموضع الذي يلي التطابق مباشرةً. القيمة الافتراضية: 0. [`(U)Int*`](/ar/reference/data-types/int-uint)
* `flags` — اختياري. خيارات Regex. القيم المدعومة: `i` (غير حساس لحالة الأحرف)، `c` (حساس لحالة الأحرف)، `m`/`n` (مراسي متعددة الأسطر)، `s` (النقطة تطابق سطرًا جديدًا). القيمة الافتراضية: فارغ. [`const String`](/ar/reference/data-types/string)
* `subexpression` — اختياري. فهرس مجموعة الالتقاط المطلوب إرجاع موضعها. 0 تعني التطابق الكامل. القيمة الافتراضية: 0. [`(U)Int*`](/ar/reference/data-types/int-uint)

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

تُرجع موضع البايت للتطابق، أو 0 إذا لم يتم العثور عليه. [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

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

```sql title=Query theme={null}
SELECT
    regexpPosition('hello world', 'world'),
    regexpPosition('aXbXcXd', 'X', 1, 2),
    regexpPosition('aXbXcXd', 'X', 1, 2, 1),
    regexpPosition('Hello WORLD', 'world', 1, 1, 0, 'i'),
    regexpPosition('foo123bar456', '([a-z]+)([0-9]+)', 1, 2, 0, '', 2);
```

```response title=Response theme={null}
┌─...─┬─...─┬─...─┬─...─┬─...─┐
│   7 │   4 │   5 │   7 │  10 │
└─────┴─────┴─────┴─────┴─────┘
```

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

أُضيف في: v26.3.0

يزيل العلامات التشكيلية (اللكنات) من سلسلة UTF-8 عبر تفكيك المحارف باستخدام NFD،
وإزالة علامات الدمج (الفئة Mn في Unicode)، ثم إعادة تركيبها باستخدام NFC.

**البنية**

```sql theme={null}
removeDiacriticsUTF8(str)
```

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

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

* `str` — سلسلة إدخال بترميز UTF-8. [`String`](/ar/reference/data-types/string)

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

سلسلة UTF-8 بعد إزالة علامات التشكيل منها. [`String`](/ar/reference/data-types/string)

**أمثلة**

**إزالة علامات التشكيل الأساسية**

```sql title=Query theme={null}
SELECT removeDiacriticsUTF8('café résumé naïve')
```

```response title=Response theme={null}
┌─removeDiacriticsUTF8('café résumé naïve')─┐
│ cafe resume naive                          │
└────────────────────────────────────────────┘
```

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

أُضيف في: v20.1.0

يُكرّر السلسلة النصية بضمّها إلى نفسها بعدد المرات المحدد.

**الصيغة**

```sql theme={null}
repeat(s, n)
```

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

* `s` — السلسلة المطلوب تكرارها. [`String`](/ar/reference/data-types/string)
* `n` — عدد مرات تكرار السلسلة. [`(U)Int*`](/ar/reference/data-types/int-uint)

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

سلسلة تتكوّن من تكرار السلسلة `s` عدد `n` من المرات. إذا كانت `n` سالبة، فتعيد الدالة سلسلة فارغة. [`String`](/ar/reference/data-types/string)

**أمثلة**

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

```sql title=Query theme={null}
SELECT repeat('abc', 10)
```

```response title=Response theme={null}
┌─repeat('abc', 10)──────────────┐
│ abcabcabcabcabcabcabcabcabcabc │
└────────────────────────────────┘
```

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

أُضيف في: v1.1.0

يعكس تسلسل نقاط ترميز Unicode في سلسلة نصية.
يفترض أن السلسلة النصية تحتوي على نص صالح بترميز UTF-8.
إذا لم يتحقق هذا الافتراض، فلا يتم طرح أي استثناء وتكون النتيجة غير معرّفة.

**الصياغة**

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

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

* `s` — سلسلة تحتوي على نص صالح بترميز UTF-8. [`سلسلة`](/ar/reference/data-types/string)

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

تعيد سلسلةً يكون فيها تسلسل نقاط Unicode البرمجية معكوسًا. [`سلسلة`](/ar/reference/data-types/string)

**أمثلة**

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

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

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

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

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

تعيد سلسلة فرعية من السلسلة `s` بإزاحة `offset` محددة تبدأ من اليمين.

**البنية**

```sql theme={null}
right(s, offset)
```

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

* `s` — السلسلة التي يُراد استخراج سلسلة فرعية منها. [`String`](/ar/reference/data-types/string) أو [`FixedString`](/ar/reference/data-types/fixedstring)
* `offset` — عدد بايتات الإزاحة. [`(U)Int*`](/ar/reference/data-types/int-uint)

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

تعيد:

* إذا كانت `offset` موجبة، فستُعاد سلسلة فرعية من `s` بطول `offset` بايتًا، بدءًا من يمين السلسلة.
* إذا كانت `offset` سالبة، فستُعاد سلسلة فرعية من `s` بطول `length(s) - |offset|` بايتًا، بدءًا من يمين السلسلة.
* سلسلة فارغة إذا كانت `length` تساوي `0`.
  [`String`](/ar/reference/data-types/string)

**أمثلة**

**إزاحة موجبة**

```sql title=Query theme={null}
SELECT right('Hello', 3)
```

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

**إزاحة سلبية**

```sql title=Query theme={null}
SELECT right('Hello', -3)
```

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

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

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

تُبطّن سلسلة نصية من اليمين بالمسافات أو بسلسلة نصية محددة (تُكرَّر عدة مرات عند الحاجة) حتى يبلغ طول السلسلة الناتجة القيمة `length` المحددة.

**البنية**

```sql theme={null}
rightPad(string, length[, pad_string])
```

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

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

* `string` — سلسلة الإدخال المطلوب حشوها. [`String`](/ar/reference/data-types/string)
* `length` — طول السلسلة الناتجة. إذا كانت القيمة أصغر من طول سلسلة الإدخال، فسيتم تقصير سلسلة الإدخال إلى `length` حرفًا. [`(U)Int*`](/ar/reference/data-types/int-uint)
* `pad_string` — اختياري. السلسلة المستخدمة لحشو سلسلة الإدخال. إذا لم يتم تحديدها، فسيتم حشو سلسلة الإدخال بمسافات. [`String`](/ar/reference/data-types/string)

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

تعيد سلسلة محشوة من الجهة اليمنى بالطول المحدد. [`String`](/ar/reference/data-types/string)

**أمثلة**

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

```sql title=Query theme={null}
SELECT rightPad('abc', 7, '*'), rightPad('abc', 7)
```

```response title=Response theme={null}
┌─rightPad('abc', 7, '*')─┬─rightPad('abc', 7)─┐
│ abc****                 │ abc                │
└─────────────────────────┴────────────────────┘
```

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

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

تُبطّن السلسلة من اليمين بمسافات أو بسلسلة محددة (عدة مرات عند الحاجة) حتى يصل طول السلسلة الناتجة إلى الطول المحدد.
وعلى عكس [`rightPad`](#rightPad) الذي يقيس طول السلسلة بالبايتات، يُقاس طول السلسلة هنا بنقاط الترميز.

**الصيغة**

```sql theme={null}
rightPadUTF8(string, length[, pad_string])
```

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

* `string` — سلسلة الإدخال المطلوب ملؤها. [`String`](/ar/reference/data-types/string)
* `length` — طول السلسلة الناتجة. إذا كانت القيمة أصغر من طول سلسلة الإدخال، فسيتم اختصار سلسلة الإدخال إلى `length` حرفًا. [`(U)Int*`](/ar/reference/data-types/int-uint)
* `pad_string` — اختياري. السلسلة المستخدمة لملء سلسلة الإدخال. إذا لم يتم تحديدها، فستُملأ سلسلة الإدخال بمسافات. [`String`](/ar/reference/data-types/string)

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

تعيد سلسلة مملوءة من اليمين بالطول المحدد. [`String`](/ar/reference/data-types/string)

**أمثلة**

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

```sql title=Query theme={null}
SELECT rightPadUTF8('абвг', 7, '*'), rightPadUTF8('абвг', 7)
```

```response title=Response theme={null}
┌─rightPadUTF8('абвг', 7, '*')─┬─rightPadUTF8('абвг', 7)─┐
│ абвг***                      │ абвг                    │
└──────────────────────────────┴─────────────────────────┘
```

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

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

يُرجع سلسلة فرعية من السلسلة `s` المرمّزة بترميز UTF-8، بإزاحة `offset` محددة تبدأ من اليمين.

**البنية**

```sql theme={null}
rightUTF8(s, offset)
```

**الوسائط**

* `s` — السلسلة النصية المرمّزة بترميز UTF-8 المطلوب استخراج سلسلة فرعية منها. [`String`](/ar/reference/data-types/string) أو [`FixedString`](/ar/reference/data-types/fixedstring)
* `offset` — عدد بايتات الإزاحة. [`(U)Int*`](/ar/reference/data-types/int-uint)

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

يعيد:

* إذا كانت `offset` موجبة، فتُعاد سلسلة فرعية من `s` بطول `offset` بايت، تبدأ من يمين السلسلة النصية.
* إذا كانت `offset` سالبة، فتُعاد سلسلة فرعية من `s` بطول `length(s) - |offset|` بايت، تبدأ من يمين السلسلة النصية.
* سلسلة نصية فارغة إذا كانت `length` تساوي `0`.
  [`String`](/ar/reference/data-types/string)

**أمثلة**

**إزاحة موجبة**

```sql title=Query theme={null}
SELECT rightUTF8('Привет', 4)
```

```response title=Response theme={null}
ивет
```

**OFFSET السالب**

```sql title=Query theme={null}
SELECT rightUTF8('Привет', -4)
```

```response title=Response theme={null}
ет
```

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

أُضيف في: v23.4.0

يُرجع [رمز Soundex](https://en.wikipedia.org/wiki/Soundex) لنص.

**الصيغة**

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

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

* `s` — سلسلة الإدخال. [`String`](/ar/reference/data-types/string)

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

يعيد رمز Soundex لسلسلة الإدخال. [`String`](/ar/reference/data-types/string)

**أمثلة**

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

```sql title=Query theme={null}
SELECT soundex('aksel')
```

```response title=Response theme={null}
┌─soundex('aksel')─┐
│ A240             │
└──────────────────┘
```

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

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

يكرّر مسافة (` `) بعدد المرات المحدد.

**البنية**

```sql theme={null}
space(n)
```

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

* `n` — عدد مرات تكرار المسافة. [`(U)Int*`](/ar/reference/data-types/int-uint)

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

تُرجِع سلسلة نصية تحتوي على مسافة مكررة `n` مرة. إذا كان `n <= 0`، فستُرجِع الدالة سلسلة فارغة. [`String`](/ar/reference/data-types/string)

**أمثلة**

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

```sql title=Query theme={null}
SELECT space(3) AS res, length(res);
```

```response title=Response theme={null}
┌─res─┬─length(res)─┐
│     │           3 │
└─────┴─────────────┘
```

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

قُدِّمت في: v25.5.0

تعثر على جميع السلاسل الفرعية في سلسلة نصية معيّنة التي لا يقل طولها عن `n`،
بحيث تكون قيم التجزئة لـ (n-1)-grams عند أطراف السلسلة الفرعية
أكبر بشكل صارم من قيم أي (n-1)-gram داخل السلسلة الفرعية.
تستخدم `CRC32` بوصفها دالة تجزئة.

**الصيغة**

```sql theme={null}
sparseGrams(s[, min_ngram_length[, max_ngram_length[, min_cutoff_length]]])
```

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

* `s` — سلسلة نصية مُدخلة. [`String`](/ar/reference/data-types/string)
* `min_ngram_length` — اختياري. الحد الأدنى لطول الـ n-gram المستخرج. القيمة الافتراضية والدنيا هي 3. [`UInt*`](/ar/reference/data-types/int-uint)
* `max_ngram_length` — اختياري. الحد الأقصى لطول الـ n-gram المستخرج. القيمة الافتراضية هي 100. يجب ألا تقل قيمته عن `min_ngram_length`. [`UInt*`](/ar/reference/data-types/int-uint)
* `min_cutoff_length` — اختياري. إذا تم تحديده، فلن تُعاد إلا n-grams التي يكون طولها أكبر من أو يساوي `min_cutoff_length`. القيمة الافتراضية هي نفسها `min_ngram_length`. يجب ألا تقل قيمته عن `min_ngram_length` وألا تزيد على `max_ngram_length`. [`UInt*`](/ar/reference/data-types/int-uint)

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

يعيد مصفوفة من المقاطع الفرعية المحددة. [`Array(String)`](/ar/reference/data-types/array)

**أمثلة**

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

```sql title=Query theme={null}
SELECT sparseGrams('alice', 3)
```

```response title=Response theme={null}
┌─sparseGrams('alice', 3)────────────┐
│ ['ali','lic','lice','ice']         │
└────────────────────────────────────┘
```

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

أُضيف في: v25.5.0

يبحث عن قيم تجزئة لجميع السلاسل الفرعية في سلسلة نصية معيّنة التي لا يقل طولها عن `n`،
بحيث تكون قيم تجزئة لـ (n-1)-grams عند حدود السلسلة الفرعية
أكبر بشكل صارم من قيم أي (n-1)-gram داخل السلسلة الفرعية.
يستخدم `CRC32` بوصفها دالة تجزئة.

**البنية**

```sql theme={null}
sparseGramsHashes(s[, min_ngram_length, max_ngram_length])
```

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

* `s` — سلسلة إدخال. [`String`](/ar/reference/data-types/string)
* `min_ngram_length` — اختياري. الحد الأدنى لطول `ngram` المستخرج. القيمة الافتراضية والدنيا هي 3. [`UInt*`](/ar/reference/data-types/int-uint)
* `max_ngram_length` — اختياري. الحد الأقصى لطول `ngram` المستخرج. القيمة الافتراضية هي 100. ويجب ألا تقل عن `min_ngram_length`. [`UInt*`](/ar/reference/data-types/int-uint)
* `min_cutoff_length` — اختياري. إذا تم تحديده، فلن تُعاد إلا `n-grams` التي يكون طولها أكبر من أو يساوي `min_cutoff_length`. القيمة الافتراضية هي نفسها `min_ngram_length`. ويجب ألا تقل عن `min_ngram_length` وألا تزيد على `max_ngram_length`. [`UInt*`](/ar/reference/data-types/int-uint)

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

تُرجع مصفوفة من قيم تجزئة CRC32 للسلاسل الفرعية المحددة. [`Array(UInt32)`](/ar/reference/data-types/array)

**أمثلة**

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

```sql title=Query theme={null}
SELECT sparseGramsHashes('alice', 3)
```

```response title=Response theme={null}
┌─sparseGramsHashes('alice', 3)──────────────────────┐
│ [1481062250,2450405249,4012725991,1918774096]      │
└────────────────────────────────────────────────────┘
```

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

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

تعثر على قيم التجزئة لجميع المقاطع الفرعية لسلسلة UTF-8 معيّنة التي لا يقل طولها عن `n`، حيث تكون قيم تجزئة مقاطع `(n-1)`-gram عند حدود المقطع الفرعي أكبر تمامًا من قيم تجزئة أي مقطع `(n-1)`-gram داخله.
تتوقع سلسلة UTF-8، وتطرح استثناءً إذا كان تسلسل UTF-8 غير صالح.
تستخدم `CRC32` كدالة تجزئة.

**البنية**

```sql theme={null}
sparseGramsHashesUTF8(s[, min_ngram_length, max_ngram_length])
```

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

* `s` — سلسلة إدخال. [`String`](/ar/reference/data-types/string)
* `min_ngram_length` — اختياري. الحد الأدنى لطول `ngram` المستخرج. القيمة الافتراضية والدنيا هي 3. [`UInt*`](/ar/reference/data-types/int-uint)
* `max_ngram_length` — اختياري. الحد الأقصى لطول `ngram` المستخرج. القيمة الافتراضية هي 100. ويجب ألا تقل عن `min_ngram_length`. [`UInt*`](/ar/reference/data-types/int-uint)
* `min_cutoff_length` — اختياري. إذا تم تحديده، فستُعاد فقط `n-grams` التي يكون طولها أكبر من أو يساوي `min_cutoff_length`. القيمة الافتراضية هي نفسها `min_ngram_length`. ويجب ألا تقل عن `min_ngram_length` وألا تزيد على `max_ngram_length`. [`UInt*`](/ar/reference/data-types/int-uint)

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

يعيد مصفوفة من تجزئات CRC32 لسلاسل UTF-8 الفرعية المحددة. [`Array(UInt32)`](/ar/reference/data-types/array)

**أمثلة**

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

```sql title=Query theme={null}
SELECT sparseGramsHashesUTF8('алиса', 3)
```

```response title=Response theme={null}
┌─sparseGramsHashesUTF8('алиса', 3)─┐
│ [4178533925,3855635300,561830861] │
└───────────────────────────────────┘
```

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

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

تعثر على جميع السلاسل الفرعية في سلسلة UTF-8 معيّنة التي لا يقل طولها عن `n`، حيث تكون قيم التجزئة لـ (n-1)-grams عند حدود السلسلة الفرعية أكبر بشكل صارم من قيم أي (n-1)-gram داخلها.
تتوقع سلسلة UTF-8، وتُطلق استثناءً في حال وجود تسلسل UTF-8 غير صالح.
تستخدم `CRC32` بوصفها دالة تجزئة.

**البنية**

```sql theme={null}
sparseGramsUTF8(s[, min_ngram_length[, max_ngram_length[, min_cutoff_length]]])
```

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

* `s` — سلسلة الإدخال. [`String`](/ar/reference/data-types/string)
* `min_ngram_length` — اختياري. الحد الأدنى لطول `ngram` المستخرَج. القيمة الافتراضية والدنيا هي 3. [`UInt*`](/ar/reference/data-types/int-uint)
* `max_ngram_length` — اختياري. الحد الأقصى لطول `ngram` المستخرَج. القيمة الافتراضية هي 100. ويجب ألا تقل عن `min_ngram_length`. [`UInt*`](/ar/reference/data-types/int-uint)
* `min_cutoff_length` — اختياري. إذا تم تحديده، فلن تُعاد إلا `n-grams` التي يكون طولها أكبر من أو مساويًا لـ `min_cutoff_length`. القيمة الافتراضية هي نفسها `min_ngram_length`. ويجب ألا تقل عن `min_ngram_length` وألا تزيد على `max_ngram_length`. [`UInt*`](/ar/reference/data-types/int-uint)

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

تعيد مصفوفة من مقاطع UTF-8 الفرعية المختارة. [`Array(String)`](/ar/reference/data-types/array)

**أمثلة**

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

```sql title=Query theme={null}
SELECT sparseGramsUTF8('алиса', 3)
```

```response title=Response theme={null}
┌─sparseGramsUTF8('алиса', 3)─┐
│ ['али','лис','иса']         │
└─────────────────────────────┘
```

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

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

يتحقق مما إذا كانت السلسلة النصية تبدأ بالسلسلة النصية المحددة.

**الصيغة**

```sql theme={null}
startsWith(s, prefix)
```

**الوسائط**

* `s` — السلسلة المطلوب التحقق منها. [`String`](/ar/reference/data-types/string)
* `prefix` — البادئة المطلوب التحقق منها. [`String`](/ar/reference/data-types/string)

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

يعيد `1` إذا كانت `s` تبدأ بـ `prefix`، وإلا فيعيد `0`. [`UInt8`](/ar/reference/data-types/int-uint)

**أمثلة**

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

```sql title=Query theme={null}
SELECT startsWith('ClickHouse', 'Click');
```

```response title=Response theme={null}
┌─startsWith('⋯', 'Click')─┐
│                        1 │
└──────────────────────────┘
```

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

أُضيف في: v25.10.0

يتحقق مما إذا كانت السلسلة النصية تبدأ بالسلسلة النصية المحددة مع تجاهل حالة الأحرف.

**الصيغة**

```sql theme={null}
startsWithCaseInsensitive(s, prefix)
```

**الوسائط**

* `s` — السلسلة النصية المطلوب التحقق منها. [`String`](/ar/reference/data-types/string)
* `prefix` — البادئة المطلوب التحقق منها دون مراعاة حالة الأحرف. [`String`](/ar/reference/data-types/string)

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

يعيد `1` إذا كانت `s` تبدأ بالبادئة `prefix` دون مراعاة حالة الأحرف، وإلا فيعيد `0`. [`UInt8`](/ar/reference/data-types/int-uint)

**أمثلة**

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

```sql title=Query theme={null}
SELECT startsWithCaseInsensitive('ClickHouse', 'CLICK');
```

```response title=Response theme={null}
┌─startsWithCaseInsensitive('⋯', 'CLICK')─┐
│                                       1 │
└─────────────────────────────────────────┘
```

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

أُضيف في: v25.10.0

يتحقق مما إذا كانت السلسلة تبدأ بالبادئة المُعطاة دون مراعاة حالة الأحرف.
يفترض أن السلسلة تحتوي على نص صالح بترميز UTF-8.
إذا لم يتحقق هذا الافتراض، فلا يُطرَح أي استثناء وتكون النتيجة غير معرّفة.

**الصيغة**

```sql theme={null}
startsWithCaseInsensitiveUTF8(s, prefix)
```

**الوسائط**

* `s` — السلسلة المراد التحقق منها. [`String`](/ar/reference/data-types/string)
* `prefix` — البادئة المراد التحقق منها، مع تجاهل حالة الأحرف. [`String`](/ar/reference/data-types/string)

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

تُرجع `1` إذا كانت `s` تبدأ بـ `prefix` مع تجاهل حالة الأحرف، وإلا تُرجع `0`. [`UInt8`](/ar/reference/data-types/int-uint)

**أمثلة**

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

```sql title=Query theme={null}
SELECT startsWithCaseInsensitiveUTF8('приставка', 'при')
```

```response title=Response theme={null}
┌─startsWithUT⋯ка', 'при')─┐
│                        1 │
└──────────────────────────┘
```

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

أُضيف في: v23.8.0

يتحقق مما إذا كانت السلسلة تبدأ بالبادئة المحددة.
يفترض أن السلسلة تحتوي على نص صالح مُرمَّز بترميز UTF-8.
إذا لم يتحقق هذا الافتراض، فلا يُطرَح أي استثناء وتكون النتيجة غير معرّفة.

**الصيغة**

```sql theme={null}
startsWithUTF8(s, prefix)
```

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

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

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

يعيد `1` إذا كانت `s` تبدأ بـ `prefix`، وإلا فيُعيد `0`. [`UInt8`](/ar/reference/data-types/int-uint)

**أمثلة**

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

```sql title=Query theme={null}
SELECT startsWithUTF8('приставка', 'при')
```

```response title=Response theme={null}
┌─startsWithUT⋯ка', 'при')─┐
│                        1 │
└──────────────────────────┘
```

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

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

تحسب إنتروبيا شانون لتوزيع البايتات في سلسلة نصية.

**الصيغة**

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

**الوسائط**

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

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

تُرجع إنتروبيا شانون لتوزيع البايتات في السلسلة النصية. [`Float64`](/ar/reference/data-types/float)

**أمثلة**

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

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

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

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

استُحدث في: v25.6.0

يحسب عدد البايتات الفريدة في سلسلة نصية.

**الصيغة**

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

**الوسائط**

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

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

يُرجع عدد البايتات المختلفة في السلسلة. [`UInt16`](/ar/reference/data-types/int-uint)

**أمثلة**

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

```sql title=Query theme={null}
SELECT stringBytesUniq('Hello')
```

```response title=Response theme={null}
┌─stringBytesUniq('Hello')─┐
│                        4 │
└──────────────────────────┘
```

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

قُدِّمت في: v23.11.0

تحسب [معامل جاكارد للتشابه](https://en.wikipedia.org/wiki/Jaccard_index) بين سلسلتين من البايتات.

**الصيغة**

```sql theme={null}
stringJaccardIndex(s1, s2)
```

**الوسائط**

* `s1` — سلسلة الإدخال الأولى. [`String`](/ar/reference/data-types/string)
* `s2` — سلسلة الإدخال الثانية. [`String`](/ar/reference/data-types/string)

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

تُرجع مؤشر تشابه جاكارد بين السلسلتين. [`Float64`](/ar/reference/data-types/float)

**أمثلة**

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

```sql title=Query theme={null}
SELECT stringJaccardIndex('clickhouse', 'mouse')
```

```response title=Response theme={null}
┌─stringJaccardIndex('clickhouse', 'mouse')─┐
│                                       0.4 │
└───────────────────────────────────────────┘
```

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

تم تقديمه في: v23.11.0

مثل [`stringJaccardIndex`](#stringJaccardIndex)، ولكن للسلاسل النصية المرمّزة بـ UTF8.

**الصيغة**

```sql theme={null}
stringJaccardIndexUTF8(s1, s2)
```

**الوسائط**

* `s1` — أول سلسلة نصية مُدخلة بترميز UTF8. [`String`](/ar/reference/data-types/string)
* `s2` — ثاني سلسلة نصية مُدخلة بترميز UTF8. [`String`](/ar/reference/data-types/string)

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

تعيد معامل تشابه Jaccard بين سلسلتي UTF8 النصيتين. [`Float64`](/ar/reference/data-types/float)

**أمثلة**

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

```sql title=Query theme={null}
SELECT stringJaccardIndexUTF8('我爱你', '我也爱你')
```

```response title=Response theme={null}
┌─stringJaccardIndexUTF8('我爱你', '我也爱你')─┐
│                                       0.75 │
└─────────────────────────────────────────────┘
```

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

مُتاحة منذ: v1.1.0

تعيد السلسلة الفرعية من السلسلة `s` التي تبدأ عند فهرس البايت المحدد `offset`.
يبدأ عدّ البايتات من 1 وفقًا للمنطق التالي:

* إذا كانت قيمة `offset` هي `0`، فستُعاد سلسلة فارغة.
* إذا كانت قيمة `offset` سالبة، فستبدأ السلسلة الفرعية على بُعد `offset` حرفًا من نهاية السلسلة بدلًا من بدايتها.

يحدد الوسيط الاختياري `length` الحد الأقصى لعدد البايتات التي يمكن أن تتضمنها السلسلة الفرعية المعادة.

**الصيغة**

```sql theme={null}
substring(s, offset[, length])
```

**الأسماء البديلة**: `byteSlice`, `mid`, `substr`

**الوسائط**

* `s` — السلسلة المُراد استخراج مقطع فرعي منها. [`String`](/ar/reference/data-types/string) أو [`FixedString`](/ar/reference/data-types/fixedstring) أو [`Enum`](/ar/reference/data-types/enum)
* `offset` — موضع بداية المقطع الفرعي في `s`. [`(U)Int*`](/ar/reference/data-types/int-uint)
* `length` — اختياري. الحد الأقصى لطول المقطع الفرعي. [`(U)Int*`](/ar/reference/data-types/int-uint)

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

تُرجع مقطعًا فرعيًا من `s` بطول `length` بايتًا، بدءًا من الفهرس `offset`. [`String`](/ar/reference/data-types/string)

**أمثلة**

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

```sql title=Query theme={null}
SELECT 'database' AS db, substr(db, 5), substr(db, 5, 1)
```

```response title=Response theme={null}
┌─db───────┬─substring('database', 5)─┬─substring('database', 5, 1)─┐
│ database │ base                     │ b                           │
└──────────┴──────────────────────────┴─────────────────────────────┘
```

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

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

تعيد السلسلة الفرعية من `s` التي تسبق `count` من مرات ظهور الفاصل `delim`، كما في Spark أو MySQL.

**الصيغة**

```sql theme={null}
substringIndex(s, delim, count)
```

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

**الوسائط**

* `s` — السلسلة التي يُستخرَج منها المقطع الفرعي. [`String`](/ar/reference/data-types/string)
* `delim` — المحرف الفاصل. [`String`](/ar/reference/data-types/string)
* `count` — عدد مرات ظهور الفاصل التي يجب احتسابها قبل استخراج المقطع الفرعي. إذا كانت قيمة `count` موجبة، فسيُعاد كل ما يقع إلى يسار الفاصل الأخير (مع العد من اليسار). وإذا كانت قيمة `count` سالبة، فسيُعاد كل ما يقع إلى يمين الفاصل الأخير (مع العد من اليمين). [`UInt`](/ar/reference/data-types/int-uint) أو [`Int`](/ar/reference/data-types/int-uint)

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

يُعيد مقطعًا فرعيًا من `s` يسبق `count` من مرات ظهور `delim`. [`String`](/ar/reference/data-types/string)

**أمثلة**

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

```sql title=Query theme={null}
SELECT substringIndex('www.clickhouse.com', '.', 2)
```

```response title=Response theme={null}
┌─substringIndex('www.clickhouse.com', '.', 2)─┐
│ www.clickhouse                               │
└──────────────────────────────────────────────┘
```

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

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

تُرجع السلسلة الفرعية من `s` التي تسبق `count` من مرات ظهور الفاصل `delim`، وذلك على مستوى نقاط Unicode البرمجية.
تفترض أن السلسلة تحتوي على نص صالح مُرمَّز بترميز UTF-8.
إذا لم يتحقق هذا الافتراض، فلا يتم طرح أي استثناء وتكون النتيجة غير معرّفة.

**الصيغة**

```sql theme={null}
substringIndexUTF8(s, delim, count)
```

**الوسائط**

* `s` — السلسلة المطلوب استخراج السلسلة الفرعية منها. [`String`](/ar/reference/data-types/string)
* `delim` — الحرف الفاصل الذي سيتم التقسيم عنده. [`String`](/ar/reference/data-types/string)
* `count` — عدد مرات ظهور الفاصل التي يجب عدّها قبل استخراج السلسلة الفرعية. إذا كانت قيمة `count` موجبة، فسيتم إرجاع كل ما يقع إلى يسار الفاصل الأخير (مع العد من اليسار). وإذا كانت قيمة `count` سالبة، فسيتم إرجاع كل ما يقع إلى يمين الفاصل الأخير (مع العد من اليمين). [`UInt`](/ar/reference/data-types/int-uint) أو [`Int`](/ar/reference/data-types/int-uint)

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

تعيد سلسلة فرعية من `s` تقع قبل `count` من مرات ظهور `delim`. [`String`](/ar/reference/data-types/string)

**أمثلة**

**مثال UTF8**

```sql title=Query theme={null}
SELECT substringIndexUTF8('www.straßen-in-europa.de', '.', 2)
```

```response title=Response theme={null}
www.straßen-in-europa
```

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

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

تعيد هذه الدالة سلسلة فرعية من السلسلة `s` تبدأ عند فهرس نقطة الترميز `offset` المحدد.
ويبدأ عدّ نقاط الترميز من `1` وفقًا للمنطق التالي:

* إذا كانت قيمة `offset` هي `0`، فستُعاد سلسلة فارغة.
* إذا كانت قيمة `offset` سالبة، فتبدأ السلسلة الفرعية عند `offset` نقطة ترميز محسوبة من نهاية السلسلة بدلًا من بدايتها.

يحدِّد الوسيط الاختياري `length` الحد الأقصى لعدد نقاط الترميز التي يمكن أن تحتويه السلسلة الفرعية المُعادة.

<Note>
  تفترض هذه الدالة أن السلسلة تحتوي على نص بترميز UTF-8 صحيح.
  وإذا لم يتحقق هذا الافتراض، فلا يُطرَح أي استثناء وتكون النتيجة غير معرّفة.
</Note>

**الصيغة**

```sql theme={null}
substringUTF8(s, offset[, length])
```

**الوسائط**

* `s` — السلسلة التي يُستخرج منها سلسلة فرعية. [`String`](/ar/reference/data-types/string) أو [`FixedString`](/ar/reference/data-types/fixedstring) أو [`Enum`](/ar/reference/data-types/enum)
* `offset` — موضع بداية السلسلة الفرعية في `s`. [`Int`](/ar/reference/data-types/int-uint) أو [`UInt`](/ar/reference/data-types/int-uint)
* `length` — الحد الأقصى لطول السلسلة الفرعية. اختياري. [`Int`](/ar/reference/data-types/int-uint) أو [`UInt`](/ar/reference/data-types/int-uint)

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

تعيد سلسلة فرعية من `s` بطول `length` من نقاط الترميز، بدءًا من فهرس نقطة الترميز `offset`. [`String`](/ar/reference/data-types/string)

**أمثلة**

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

```sql title=Query theme={null}
SELECT 'Täglich grüßt das Murmeltier.' AS str, substringUTF8(str, 9), substringUTF8(str, 9, 5)
```

```response title=Response theme={null}
Täglich grüßt das Murmeltier.    grüßt das Murmeltier.    grüßt
```

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

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

يحوّل سلسلة نصية إلى ترميز UTF-8 صالح عبر استبدال أي محارف UTF-8 غير الصالحة بمحرف الاستبدال `�` (U+FFFD).
وعند العثور على عدة محارف غير صالحة متتالية، تُختزل إلى محرف استبدال واحد.

**الصيغة**

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

**الوسائط**

* `s` — أي مجموعة من البايتات مُمثَّلة ككائن من نوع البيانات String. [`String`](/ar/reference/data-types/string)

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

يعيد سلسلة نصية صالحة بترميز UTF-8. [`String`](/ar/reference/data-types/string)

**أمثلة**

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

```sql title=Query theme={null}
SELECT toValidUTF8('\\x61\\xF0\\x80\\x80\\x80b')
```

```response title=Response theme={null}
c
┌─toValidUTF8('a����b')─┐
│ a�b                   │
└───────────────────────┘
```

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

أُضيف في: v20.1.0

يزيل الأحرف المحددة من بداية السلسلة النصية ونهايتها.
ويزيل افتراضيًا أحرف المسافات البيضاء (ASCII) الشائعة.

**الصيغة**

```sql theme={null}
trimBoth(s[, trim_characters])
```

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

**الوسائط**

* `s` — السلسلة النصية المطلوب إزالة الأحرف منها. [`String`](/ar/reference/data-types/string)
* `trim_characters` — اختياري. الأحرف المطلوب إزالتها. إذا لم تُحدَّد، فستُزال أحرف المسافات البيضاء الشائعة. [`String`](/ar/reference/data-types/string)

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

تعيد السلسلة النصية بعد إزالة الأحرف المحددة من الطرفين. [`String`](/ar/reference/data-types/string)

**أمثلة**

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

```sql title=Query theme={null}
SELECT trimBoth('$$ClickHouse$$', '$')
```

```response title=Response theme={null}
┌─trimBoth('$$⋯se$$', '$')─┐
│ ClickHouse               │
└──────────────────────────┘
```

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

استُحدثت في: v20.1.0

تزيل الأحرف المحددة من بداية السلسلة.
وبشكل افتراضي، تزيل أحرف المسافات البيضاء الشائعة (ASCII).

**الصياغة**

```sql theme={null}
trimLeft(input[, trim_characters])
```

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

**الوسائط**

* `input` — السلسلة النصية المطلوب اقتطاعها. [`String`](/ar/reference/data-types/string)
* `trim_characters` — اختياري. الأحرف المطلوب اقتطاعها. إذا لم يتم تحديدها، تُزال أحرف المسافات البيضاء الشائعة. [`String`](/ar/reference/data-types/string)

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

تعيد السلسلة النصية بعد اقتطاع الأحرف المحددة من الجهة اليسرى. [`String`](/ar/reference/data-types/string)

**أمثلة**

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

```sql title=Query theme={null}
SELECT trimLeft('ClickHouse', 'Click');
```

```response title=Response theme={null}
┌─trimLeft('Cl⋯', 'Click')─┐
│ House                    │
└──────────────────────────┘
```

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

أُضيف في: v20.1.0

يزيل الأحرف المحددة من نهاية سلسلة نصية.
وبشكل افتراضي، يزيل أحرف المسافات البيضاء (ASCII) الشائعة.

**الصيغة**

```sql theme={null}
trimRight(s[, trim_characters])
```

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

**الوسائط**

* `s` — السلسلة المطلوب اقتطاع الأحرف منها. [`String`](/ar/reference/data-types/string)
* `trim_characters` — أحرف اختيارية لاقتطاعها. إذا لم يتم تحديدها، فستُزال أحرف المسافات البيضاء الشائعة. [`String`](/ar/reference/data-types/string)

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

تعيد السلسلة بعد اقتطاع الأحرف المحددة من طرفها الأيمن. [`String`](/ar/reference/data-types/string)

**أمثلة**

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

```sql title=Query theme={null}
SELECT trimRight('ClickHouse','House');
```

```response title=Response theme={null}
┌─trimRight('C⋯', 'House')─┐
│ Click                    │
└──────────────────────────┘
```

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

أُضيف في: v25.6.0

يقبل سلسلة نصية ويفك ترميزها باستخدام نظام الترميز [Base32](https://datatracker.ietf.org/doc/html/rfc4648#section-6).

**الصيغة**

```sql theme={null}
tryBase32Decode(encoded)
```

**الوسائط**

* `encoded` — عمود String أو قيمة ثابتة لفك ترميزها. إذا لم تكن السلسلة مرمّزة بترميز Base32 بشكل صحيح، فستُرجع سلسلة فارغة عند حدوث خطأ. [`String`](/ar/reference/data-types/string)

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

ترجع سلسلة تحتوي على القيمة الناتجة بعد فك ترميز الوسيطة. [`String`](/ar/reference/data-types/string)

**أمثلة**

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

```sql title=Query theme={null}
SELECT tryBase32Decode('IVXGG33EMVSA====');
```

```response title=Response theme={null}
┌─tryBase32Decode('IVXGG33EMVSA====')─┐
│ Encoded                             │
└─────────────────────────────────────┘
```

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

أُضيف في: v22.10.0

مثل [`base58Decode`](#base58Decode)، لكنه يعيد سلسلة فارغة عند حدوث خطأ.

**الصيغة**

```sql theme={null}
tryBase58Decode(encoded[, expected_size])
```

**الوسائط**

* `encoded` — عمود `String` أو قيمة ثابتة. إذا لم تكن السلسلة مرمّزة بترميز Base58 صالح، فستُرجِع سلسلة فارغة عند حدوث خطأ. [`String`](/ar/reference/data-types/string)
* `expected_size` — اختياري. الحجم المتوقع بعد فك الترميز بالبايت. عندما تكون القيمة 32 أو 64، يُستخدم مفكِّك ترميز مُحسَّن؛ وبالنسبة إلى القيم الأخرى، يُستخدم مفكِّك الترميز العام. [`UInt8, UInt16, UInt32, or UInt64`](/ar/reference/data-types/int-uint)

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

تُرجِع سلسلة تحتوي على القيمة الناتجة عن فك ترميز الوسيطة. [`String`](/ar/reference/data-types/string)

**أمثلة**

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

```sql title=Query theme={null}
SELECT tryBase58Decode('3dc8KtHrwM') AS res, tryBase58Decode('invalid') AS res_invalid;
```

```response title=Response theme={null}
┌─res─────┬─res_invalid─┐
│ Encoded │             │
└─────────┴─────────────┘
```

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

أُضيف في: v18.16.0

مثل [`base64Decode`](#base64Decode)، لكنه يعيد سلسلة فارغة عند حدوث خطأ.

**البنية**

```sql theme={null}
tryBase64Decode(encoded)
```

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

* `encoded` — عمود String أو قيمة ثابتة لفك ترميزها. إذا لم تكن السلسلة مرمّزة بترميز Base64 صالح، فسيُرجِع سلسلة فارغة عند حدوث خطأ. [`String`](/ar/reference/data-types/string)

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

يُرجِع سلسلة تحتوي على القيمة الناتجة عن فك ترميز الوسيطة. [`String`](/ar/reference/data-types/string)

**أمثلة**

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

```sql title=Query theme={null}
SELECT tryBase64Decode('Y2xpY2tob3VzZQ==')
```

```response title=Response theme={null}
┌─tryBase64Decode('Y2xpY2tob3VzZQ==')─┐
│ clickhouse                          │
└─────────────────────────────────────┘
```

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

أُضيف في الإصدار: v18.16.0

مثل [`base64URLDecode`](#base64URLDecode)، لكنه يعيد سلسلة فارغة عند حدوث خطأ.

**الصيغة**

```sql theme={null}
tryBase64URLDecode(encoded)
```

**الوسائط**

* `encoded` — عمود من نوع String أو قيمة ثابتة لفك ترميزها. إذا لم تكن السلسلة مُرمَّزة بترميز Base64 صالح، فستُرجِع سلسلة فارغة عند حدوث خطأ. [`String`](/ar/reference/data-types/string)

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

تُرجِع سلسلة تحتوي على القيمة الناتجة عن فك ترميز الوسيط. [`String`](/ar/reference/data-types/string)

**الأمثلة**

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

```sql title=Query theme={null}
SELECT tryBase64URLDecode('aHR0cHM6Ly9jbGlja2hvdXNlLmNvbQ')
```

```response title=Response theme={null}
┌─tryBase64URLDecode('aHR0cHM6Ly9jbGlja2hvdXNlLmNvbQ')─┐
│ https://clickhouse.com                               │
└──────────────────────────────────────────────────────┘
```

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

أُضيف في: v24.1.0

يعيد تمثيل Unicode ‏(UTF-8) لاسم النطاق وفق خوارزمية ToUnicode ووفقًا لآلية [Internationalized Domain Names in Applications](https://en.wikipedia.org/wiki/Internationalized_domain_name#Internationalizing_Domain_Names_in_Applications) ‏(IDNA).
في حال حدوث خطأ، يعيد سلسلة فارغة بدلًا من رفع استثناء.

**الصيغة**

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

**الوسائط**

* `s` — سلسلة الإدخال. [`String`](/ar/reference/data-types/string)

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

تعيد تمثيل ASCII لسلسلة الإدخال وفق آلية IDNA لقيمة الإدخال، أو سلسلة فارغة إذا كانت قيمة الإدخال غير صالحة. [`String`](/ar/reference/data-types/string)

**أمثلة**

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

```sql title=Query theme={null}
SELECT tryIdnaEncode('straße.münchen.de')
```

```response title=Response theme={null}
┌─tryIdnaEncode('straße.münchen.de')──┐
│ xn--strae-oqa.xn--mnchen-3ya.de     │
└─────────────────────────────────────┘
```

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

أُضيف في: v24.1.0

يشبه `punycodeDecode`، لكنه يعيد سلسلة فارغة إذا لم يتم تمرير سلسلة صالحة مُرمَّزة بـ Punycode.

**الصيغة**

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

**الوسائط**

* `s` — سلسلة مُرمَّزة باستخدام Punycode. [`String`](/ar/reference/data-types/string)

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

تعيد النص الصريح لقيمة الإدخال، أو سلسلة فارغة إذا كانت قيمة الإدخال غير صالحة. [`String`](/ar/reference/data-types/string)

**أمثلة**

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

```sql title=Query theme={null}
SELECT tryPunycodeDecode('Mnchen-3ya')
```

```response title=Response theme={null}
┌─tryPunycodeDecode('Mnchen-3ya')─┐
│ München                         │
└─────────────────────────────────┘
```

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

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

يحوّل أحرف ASCII اللاتينية في سلسلة نصية إلى أحرف كبيرة.

**الصيغة**

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

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

**الوسائط**

* `s` — السلسلة المراد تحويلها إلى أحرف كبيرة. [`String`](/ar/reference/data-types/string)

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

تعيد السلسلة `s` بعد تحويلها إلى أحرف كبيرة. [`String`](/ar/reference/data-types/string)

**أمثلة**

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

```sql title=Query theme={null}
SELECT upper('clickhouse')
```

```response title=Response theme={null}
┌─upper('clickhouse')─┐
│ CLICKHOUSE          │
└─────────────────────┘
```

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

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

يحوّل سلسلة نصية إلى أحرف كبيرة، على افتراض أن السلسلة تحتوي على نص صالح مرمّز بترميز UTF-8.
إذا لم يتحقق هذا الافتراض، فلا يتم طرح أي استثناء وتكون النتيجة غير معرّفة.

<Note>
  لا تكتشف هذه الدالة اللغة. فعلى سبيل المثال، قد لا تكون النتيجة صحيحة تمامًا للغة التركية (i/İ مقابل i/I).
  إذا كان طول تسلسل بايتات UTF-8 مختلفًا بين الأحرف الكبيرة والصغيرة لنقطة ترميز ما (مثل `ẞ` و `ß`)، فقد تكون النتيجة غير صحيحة لتلك النقطة.
</Note>

**الصيغة**

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

**الوسائط**

* `s` — من النوع [`String`](/ar/reference/data-types/string)

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

قيمة من نوع البيانات [`String`](/ar/reference/data-types/string)

**أمثلة**

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

```sql title=Query theme={null}
SELECT upperUTF8('München') AS Upperutf8
```

```response title=Response theme={null}
┌─Upperutf8─┐
│ MÜNCHEN   │
└───────────┘
```
