يتم تناول الدوال الخاصة بـالبحث في السلاسل النصية وبـالاستبدال فيها بشكل منفصل.
يتم إنشاء الوثائق أدناه من جدول النظام system.functions.
أُضيف في: v20.1.0
يحسب قيمة المجموع الاختباري CRC32 لسلسلة نصية باستخدام كثير الحدود CRC-32-IEEE 802.3 والقيمة الابتدائية 0xffffffff (بتنفيذ zlib).
الصيغة
الوسائط
s — سلسلة من نوع String يُراد حساب CRC32 لها. String
القيمة المُعادة
تُرجع المجموع الاختباري CRC32 للسلسلة. UInt32
أمثلة
مثال على الاستخدام
SELECT CRC32('ClickHouse')
┌─CRC32('ClickHouse')─┐
│ 1538217360 │
└─────────────────────┘
استُحدث في: v20.1.0
يحسب المجموع الاختباري CRC32 لسلسلة نصية باستخدام كثيرة الحدود CRC-32-IEEE 802.3.
الصياغة
المعاملات
s — السلسلة النصية المراد حساب قيمة CRC32 لها. String
القيمة المُعادة
تُرجع المجموع الاختباري CRC32 للسلسلة النصية. UInt32
أمثلة
مثال على الاستخدام
SELECT CRC32IEEE('ClickHouse');
┌─CRC32IEEE('ClickHouse')─┐
│ 3089448422 │
└─────────────────────────┘
أُضيف في: v20.1.0
يحسب المجموع الاختباري CRC64 لسلسلة باستخدام كثير الحدود CRC-64-ECMA.
الصيغة
الوسيطات
s — قيمة من النوع String يُحسَب لها CRC64. String
القيمة المُعادة
يُرجع المجموع الاختباري CRC64 للسلسلة. UInt64
أمثلة
مثال على الاستخدام
SELECT CRC64('ClickHouse');
┌──CRC64('ClickHouse')─┐
│ 12126588151325169346 │
└──────────────────────┘
appendTrailingCharIfAbsent
قُدِّمت في: v1.1.0
تُضيف الحرف c إلى السلسلة s إذا كانت s غير فارغة ولا تنتهي بالحرف c.
الصياغة
appendTrailingCharIfAbsent(s, c)
الوسيطات
s — سلسلة الإدخال. String
c — المحرف الذي يُلحَق إذا لم يكن موجودًا. String
القيمة المُعادة
تُرجِع السلسلة s بعد إلحاق المحرف c بها إذا كانت s لا تنتهي بـ c. String
أمثلة
مثال على الاستخدام
SELECT appendTrailingCharIfAbsent('https://example.com', '/');
┌─appendTraili⋯.com', '/')─┐
│ https://example.com/ │
└──────────────────────────┘
أُضيف في: v22.11.0
يعيد قيمة نقطة رمز ASCII للحرف الأول من السلسلة s كقيمة من النوع Int32.
الصيغة
الوسيطات
s — مُدخل من النوع String. String
القيمة المعادة
تعيد نقطة الرمز ASCII للمحرف الأول. إذا كانت s فارغة، فالنتيجة هي 0. وإذا لم يكن المحرف الأول محرف ASCII أو لم يكن جزءًا من نطاق Latin-1 Supplement في UTF-16، فالنتيجة غير معرّفة. Int32
أمثلة
مثال على الاستخدام
┌─ascii('234')─┐
│ 50 │
└──────────────┘
استُحدثت في: v25.6.0
تفك ترميز سلسلة Base32 (RFC 4648).
إذا لم تكن السلسلة مرمّزة بترميز Base32 صالح، فسيتم رفع استثناء.
الصياغة
المعاملات
encoded — عمود أو ثابت من نوع String. String
القيمة المُعادة
تعيد سلسلة تحتوي على القيمة بعد فك ترميز الوسيطة. String
أمثلة
مثال على الاستخدام
SELECT base32Decode('IVXGG33EMVSA====');
┌─base32Decode('IVXGG33EMVSA====')─┐
│ Encoded │
└──────────────────────────────────┘
أُضيف في: v25.6.0
يُشفِّر سلسلة نصية باستخدام Base32.
الصيغة
الوسائط
plaintext — النص الصريح المطلوب ترميزه. String
القيمة المُعادة
تُرجِع سلسلة نصية تحتوي على القيمة المُرمَّزة للوسيطة. String أو FixedString
أمثلة
مثال على الاستخدام
SELECT base32Encode('Encoded')
┌─base32Encode('Encoded')─┐
│ IVXGG33EMVSA==== │
└─────────────────────────┘
تم تقديمه في: v22.7.0
يفك ترميز سلسلة Base58.
إذا لم تكن السلسلة مرمّزة بترميز Base58 صالح، فسيُطرح استثناء.
يمكن تمرير وسيطة اختيارية ثانية هي expected_size لاختيار مفكّك ترميز محسّن بحجم ثابت.
القيم المدعومة حاليًا هي 32 و64. أما القيم الأخرى، فيُستخدم مفكّك الترميز العام.
عند اختيار مفكّك الترميز المحسّن، ولكن يتعذر فك ترميز المُدخل إلى هذا العدد من البايتات بالضبط،
تطرح الدالة استثناءً (أو تُرجع سلسلة فارغة في tryBase58Decode).
البنية
base58Decode(encoded[, expected_size])
الوسيطات
encoded — عمود String أو ثابت لفك ترميزه. String
expected_size — اختياري. الحجم المتوقع بعد فك الترميز بالبايت. عندما تكون القيمة 32 أو 64، يُستخدم مفكّك ترميز مُحسَّن؛ وبالنسبة إلى القيم الأخرى، يُستخدم مفكّك الترميز العام. UInt8, UInt16, UInt32, or UInt64
القيمة المُعادة
تُرجع سلسلة تحتوي على القيمة الناتجة عن فك ترميز الوسيط. String
أمثلة
مثال على الاستخدام
SELECT base58Decode('JxF12TrwUP45BMd');
┌─base58Decode⋯rwUP45BMd')─┐
│ Hello World │
└──────────────────────────┘
أُضيف في: v22.7.0
يُشفِّر سلسلة نصية باستخدام ترميز Base58.
الصيغة
الوسائط
plaintext — النص الصريح المطلوب ترميزه. String
القيمة المعادة
تُرجع سلسلة نصية تحتوي على القيمة المُرمَّزة للوسيطة. String
أمثلة
مثال على الاستخدام
SELECT base58Encode('ClickHouse');
┌─base58Encode('ClickHouse')─┐
│ 4nhk8K7GHXf6zx │
└────────────────────────────┘
أُضيفت في: v18.16.0
يفك ترميز سلسلة من تنسيق Base64 وفقًا لـ RFC 4648.
يُثير استثناءً عند حدوث خطأ.
الصيغة
الأسماء المستعارة: FROM_BASE64
المعاملات
encoded — عمود أو ثابت من نوع String لفك ترميزه. إذا لم تكن السلسلة النصية مرمّزة بترميز Base64 ترميزًا صالحًا، فسيتم إطلاق استثناء. String
القيمة المُعادة
يعيد السلسلة النصية بعد فك ترميزها. String
أمثلة
مثال على الاستخدام
SELECT base64Decode('Y2xpY2tob3VzZQ==')
┌─base64Decode('Y2xpY2tob3VzZQ==')─┐
│ clickhouse │
└──────────────────────────────────┘
أُضيفت في: v18.16.0
يُشفِّر سلسلة نصية بتمثيل Base64، وفقًا للمواصفة RFC 4648.
الصياغة
الأسماء البديلة: TO_BASE64
الوسيطات
plaintext — عمود أو ثابت من النص الصريح لفك ترميزه. String
القيمة المُعادة
تعيد سلسلة تحتوي على القيمة المُرمَّزة للوسيطة. String
أمثلة
مثال على الاستخدام
SELECT base64Encode('clickhouse')
┌─base64Encode('clickhouse')─┐
│ Y2xpY2tob3VzZQ== │
└────────────────────────────┘
أُضيف في: v24.6.0
يفك ترميز سلسلة من تمثيل Base64 باستخدام أبجدية آمنة لعناوين URL، وفقًا للمعيار RFC 4648.
يؤدي إلى إطلاق استثناء في حال حدوث خطأ.
الصيغة
الوسائط
encoded — عمود أو ثابت من نوع String لترميزه. إذا لم تكن السلسلة النصية مرمّزة بترميز Base64 ترميزًا صالحًا، فسيُطلق استثناء. String
القيمة المعادة
تعيد سلسلة نصية تحتوي على القيمة بعد فك ترميز الوسيطة. String
أمثلة
مثال على الاستخدام
SELECT base64URLDecode('aHR0cHM6Ly9jbGlja2hvdXNlLmNvbQ')
┌─base64URLDecode('aHR0cHM6Ly9jbGlja2hvdXNlLmNvbQ')─┐
│ https://clickhouse.com │
└───────────────────────────────────────────────────┘
أُضيف في: v18.16.0
يُرمِّز سلسلة نصية باستخدام تمثيل Base64 (RFC 4648) وبالأبجدية الآمنة لعناوين URL.
الصيغة
base64URLEncode(plaintext)
الوسائط
plaintext — عمود أو ثابت يحتوي على نص صريح لترميزه. String
القيمة المُعادة
تُرجع سلسلة تحتوي على القيمة المُرمَّزة للوسيط. String
أمثلة
مثال على الاستخدام
SELECT base64URLEncode('https://clickhouse.com')
┌─base64URLEncode('https://clickhouse.com')─┐
│ aHR0cHM6Ly9jbGlja2hvdXNlLmNvbQ │
└───────────────────────────────────────────┘
تم تقديمها في: v20.1.0
تستخرج الجزء الأخير من سلسلة نصية بعد آخر شرطة مائلة أو شرطة مائلة عكسية.
وغالبًا ما تُستخدم هذه الدالة لاستخراج اسم الملف من مسار.
البنية
المعاملات
expr — تعبير نصي من النوع String. يجب تهريب محارف الشرطة المائلة العكسية. String
القيمة المُعادة
تعيد الجزء من سلسلة الإدخال الواقع بعد آخر شرطة مائلة أو شرطة مائلة عكسية. إذا كانت سلسلة الإدخال تنتهي بشرطة مائلة أو شرطة مائلة عكسية، فستُعيد الدالة سلسلة نصية فارغة. وتُعيد السلسلة الأصلية إذا لم تحتوِ على أي شرطات مائلة أو شرطات مائلة عكسية. String
أمثلة
استخراج اسم الملف من مسار Unix
SELECT 'some/long/path/to/file' AS a, basename(a)
┌─a──────────────────────┬─basename('some/long/path/to/file')─┐
│ some/long/path/to/file │ file │
└────────────────────────┴────────────────────────────────────┘
استخراج اسم الملف من مسار Windows
SELECT 'some\\long\\path\\to\\file' AS a, basename(a)
┌─a──────────────────────┬─basename('some\\long\\path\\to\\file')─┐
│ some\long\path\to\file │ file │
└────────────────────────┴────────────────────────────────────────┘
سلسلة نصية من دون فواصل المسارات
SELECT 'some-file-name' AS a, basename(a)
┌─a──────────────┬─basename('some-file-name')─┐
│ some-file-name │ some-file-name │
└────────────────┴────────────────────────────┘
قُدِّمت في: v23.9.0
تحسب مسافة هامينغ بين سلسلتي بايتات.
الصياغة
byteHammingDistance(s1, s2)
الأسماء البديلة: mismatches
الوسائط
s1 — سلسلة الإدخال الأولى. String
s2 — سلسلة الإدخال الثانية. String
القيمة المُعادة
تعيد مسافة هامينغ بين السلسلتين. UInt64
أمثلة
مثال على الاستخدام
SELECT byteHammingDistance('karolin', 'kathrin')
┌─byteHammingDistance('karolin', 'kathrin')─┐
│ 3 │
└───────────────────────────────────────────┘
أُضيف في: v26.3.0
يطبّق طيّ حالة Unicode على سلسلة UTF-8، ويحوّلها إلى صيغة مُطبَّعة شبيهة بالأحرف الصغيرة ومناسبة للمقارنات غير الحساسة لحالة الأحرف.
يطبّق طيّ حالة Unicode القياسي. ويحافظ على محارف التوافق التي لا تتأثر بطيّ الحالة
(مثل الأرقام الرومانية والأرقام داخل دوائر)، ولكن تجدر الإشارة إلى أن بعض الروابط الطباعية مثل ffi لا تزال تُفكَّك لأن طيّ حالة Unicode نفسه يوسّعها.
الصياغة
الوسائط
str — سلسلة إدخال مرمَّزة بترميز UTF-8. String
القيمة المعادة
سلسلة UTF-8 بعد طيّ حالة الأحرف. String
أمثلة
الطيّ الأساسي لحالة الأحرف
SELECT caseFoldUTF8('Straße')
┌─caseFoldUTF8('Straße')─┐
│ strasse │
└─────────────────────────┘
أُضيف في: v25.2.0
يقارن سلسلتين نصيتين ترتيبًا معجميًا.
الصيغة
compareSubstrings(s1, s2, s1_offset, s2_offset, num_bytes)
الوسائط
s1 — السلسلة الأولى للمقارنة. String
s2 — السلسلة الثانية للمقارنة. String
s1_offset — الموضع في s1 الذي تبدأ منه المقارنة (بدءًا من الصفر). UInt*
s2_offset — الموضع في s2 الذي تبدأ منه المقارنة (فهرس يبدأ من الصفر). UInt*
num_bytes — الحد الأقصى لعدد البايتات المراد مقارنتها في كلتا السلسلتين. إذا كان s1_offset (أو s2_offset) + num_bytes يتجاوز نهاية سلسلة الإدخال، فسيُخفَّض num_bytes تبعًا لذلك. 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
أمثلة
مثال على الاستخدام
SELECT compareSubstrings('Saxony', 'Anglo-Saxon', 0, 6, 5) AS result
┌─result─┐
│ 0 │
└────────┘
أُضيفت في: v1.1.0
يضمّ المعاملات المُعطاة إلى بعضها.
تُحوَّل المعاملات التي لا تكون من النوعين String أو FixedString إلى سلاسل نصية باستخدام آلية التسلسل الافتراضية الخاصة بها.
ونظرًا إلى أن ذلك يخفّض الأداء، فلا يُنصح باستخدام معاملات ليست من نوع String/FixedString.
البنية
الوسيطات
s1, s2, ... — أي عدد من القيم من أي نوع. Any
القيمة المُعادة
تعيد الدالة قيمة من نوع String ناتجة عن دمج الوسيطات. إذا كانت أي من الوسيطات NULL، فستُعيد الدالة NULL. وإذا لم تكن هناك أي وسيطات، فستُعيد سلسلة فارغة. Nullable(String)
أمثلة
دمج السلاسل النصية
SELECT concat('Hello, ', 'World!')
┌─concat('Hello, ', 'World!')─┐
│ Hello, World! │
└─────────────────────────────┘
دمج الأرقام
┌─concat(42, 144)─┐
│ 42144 │
└─────────────────┘
تم تقديمها في: v1.1.0
مثل concat، لكنها تفترض أن concat(s1, s2, ...) → sn دالة حقنية،
أي إنها تُرجع قيماً مختلفة لوسائط مختلفة.
يمكن استخدامها لتحسين GROUP BY.
الصيغة
concatAssumeInjective([s1, s2, ...])
الوسائط
القيمة المعادة
تعيد السلسلة النصية المُنشأة بضم الوسائط. إذا كانت أي من قيم الوسائط هي NULL، فستعيد الدالة NULL. وإذا لم يتم تمرير أي وسائط، فستعيد سلسلة نصية فارغة. String
أمثلة
تحسين Group by
SELECT concat(key1, key2), sum(value) FROM key_val GROUP BY concatAssumeInjective(key1, key2)
┌─concat(key1, key2)─┬─sum(value)─┐
│ Hello, World! │ 3 │
│ Hello, World! │ 2 │
│ Hello, World │ 3 │
└────────────────────┴────────────┘
أُضيفت في: v22.12.0
تجمع السلاسل النصية المقدَّمة، مع الفصل بينها باستخدام الفاصل المحدد.
الصيغة
concatWithSeparator(sep[, exp1, exp2, ...])
الأسماء البديلة: concat_ws
الوسيطات
sep — الفاصل المطلوب استخدامه. const String أو const FixedString
exp1, exp2, ... — التعبير المراد ضمّه. تُحوَّل الوسيطات التي لا يكون نوعها String أو FixedString إلى سلاسل نصية باستخدام التسلسل الافتراضي لها. ونظرًا إلى أن هذا يخفّض الأداء، فلا يُنصح باستخدام وسيطات ليست من النوع String/FixedString. Any
القيمة المُعادة
تعيد الدالة سلسلة String ناتجة عن ضمّ الوسيطات. إذا كانت أي من قيم الوسيطات تساوي NULL، فستُرجع الدالة NULL. String
أمثلة
مثال استخدام
SELECT concatWithSeparator('a', '1', '2', '3', '4')
┌─concatWithSeparator('a', '1', '2', '3', '4')─┐
│ 1a2a3a4 │
└──────────────────────────────────────────────┘
concatWithSeparatorAssumeInjective
أُضيف في: v22.12.0
يشبه concatWithSeparator، لكنه يفترض أن concatWithSeparator(sep[,exp1, exp2, ... ]) → result دالة حقنية.
تُسمى الدالة حقنية إذا كانت تُرجِع نتائج مختلفة لوسائط مختلفة.
يمكن استخدامه لتحسين GROUP BY.
البنية
concatWithSeparatorAssumeInjective(sep[, exp1, exp2, ... ])
الوسيطات
sep — الفاصل المراد استخدامه. const String أو const FixedString
exp1, exp2, ... — التعبير المراد ربطه. تُحوَّل الوسيطات التي لا تكون من النوع String أو FixedString إلى سلاسل نصية باستخدام التسلسل الافتراضي الخاص بها. ونظرًا لأن هذا يخفّض الأداء، فلا يُنصح باستخدام وسيطات ليست من النوع String/FixedString. String أو FixedString
القيمة المُعادة
تعيد الدالة String الناتج عن ربط الوسيطات. إذا كانت أي من قيم الوسيطات NULL، فستُعيد الدالة NULL. String
أمثلة
مثال على الاستخدام
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);
┌─full_name───┬─total_score─┐
│ Jane-Smith │ 240 │
│ John-Doe │ 100 │
│ John-Wilson │ 120 │
└─────────────┴─────────────┘
أُضيف في: v25.10.0
يحوّل الأرقام بين قواعد عددية مختلفة.
تُحوّل هذه الدالة رقماً من قاعدة عددية إلى أخرى. وهي تدعم القواعد من 2 إلى 36.
وبالنسبة إلى القواعد الأكبر من 10، تُستخدم الأحرف A-Z (دون حساسية لحالة الأحرف) لتمثيل الأرقام من 10 إلى 35.
هذه الدالة متوافقة مع الدالة CONV() في MySQL.
الصيغة
conv(number, from_base, to_base)
المعاملات
number — الرقم المراد تحويله. يمكن أن يكون سلسلة نصية أو نوعًا رقميًا. - from_base — الأساس الأصلي (2-36). يجب أن يكون عددًا صحيحًا. - to_base — الأساس الهدف (2-36). يجب أن يكون عددًا صحيحًا.
القيمة المعادة
التمثيل النصي للرقم بالأساس الهدف.
أمثلة
تحويل العدد العشري إلى الثنائي
تحويل من السداسي عشري إلى العشري
SELECT conv('FF', 16, 10)
التحويل باستخدام عدد سالب
SELECT conv('-1', 10, 16)
التحويل من الثنائي إلى الثماني
SELECT conv('1010', 2, 8)
أُضيف في: v1.1.0
يُرجع السلسلة s بعد تحويل ترميزها من from إلى to.
الصياغة
convertCharset(s, from, to)
المعاملات
s — سلسلة الإدخال. String
from — ترميز الأحرف المصدري. String
to — ترميز الأحرف المستهدف. String
القيمة المعادة
تعيد السلسلة s بعد تحويل ترميزها من from إلى to. String
أمثلة
مثال على الاستخدام
SELECT convertCharset('Café', 'UTF-8', 'ISO-8859-1');
┌─convertChars⋯SO-8859-1')─┐
│ Caf� │
└──────────────────────────┘
damerauLevenshteinDistance
أُضيفت في: v24.1.0
تحسب مسافة Damerau-Levenshtein بين سلسلتين من البايتات.
الصيغة
damerauLevenshteinDistance(s1, s2)
الوسائط
s1 — سلسلة الإدخال الأولى. String
s2 — سلسلة الإدخال الثانية. String
القيمة المُعادة
تُرجِع مسافة داميراو-ليفنشتاين بين السلسلتين. UInt64
أمثلة
مثال على الاستخدام
SELECT damerauLevenshteinDistance('clickhouse', 'mouse')
┌─damerauLevenshteinDistance('clickhouse', 'mouse')─┐
│ 6 │
└───────────────────────────────────────────────────┘
أُضيف في: v23.9.0
يفكّ ترميز كيانات HTML في سلسلة نصية إلى الأحرف المقابلة لها.
الصيغة
المعاملات
s — سلسلة نصية من نوع String تحتوي على كيانات HTML المطلوب فك ترميزها. String
القيمة المُعادة
تُعيد السلسلة النصية بعد فك ترميز كيانات HTML. String
أمثلة
مثال على الاستخدام
SELECT decodeHTMLComponent('<div>Hello & "World"</div>')
┌─decodeHTMLComponent('<div>Hello & "World"</div>')─┐
│ <div>Hello & "World"</div> │
└─────────────────────────────────────────────────────────────────────────────┘
أُضيف في: v21.2.0
يفك ترميز كيانات XML في سلسلة نصية إلى الأحرف المقابلة لها.
الصيغة
المعاملات
s — قيمة من النوع String تحتوي على كيانات XML المطلوب فك ترميزها. String
القيمة المُعادة
تُرجِع السلسلة المُمرَّرة بعد فك ترميز كيانات XML. String
أمثلة
مثال على الاستخدام
SELECT decodeXMLComponent('<tag>Hello & World</tag>')
┌─decodeXMLCom⋯;/tag>')─┐
│ <tag>Hello & World</tag> │
└──────────────────────────┘
استُحدث في: v23.9.0
تحسب مسافة التحرير بين سلسلتي بايت.
الصيغة
الأسماء البديلة: levenshteinDistance
المعاملات
s1 — سلسلة الإدخال الأولى. String
s2 — سلسلة الإدخال الثانية. String
القيمة المعادة
تعرض مسافة التحرير بين السلسلتين. UInt64
أمثلة
مثال للاستخدام
SELECT editDistance('clickhouse', 'mouse')
┌─editDistance('clickhouse', 'mouse')─┐
│ 6 │
└─────────────────────────────────────┘
أُضيفت في: v24.6.0
تحسب مسافة التحرير بين سلسلتين نصيتين بترميز UTF8.
الصيغة
الأسماء البديلة: levenshteinDistanceUTF8
المعاملات
s1 — سلسلة الإدخال الأولى. String
s2 — سلسلة الإدخال الثانية. String
القيمة المعادة
تُرجع مسافة التحرير بين سلسلتي UTF8. UInt64
أمثلة
مثال على الاستخدام
SELECT editDistanceUTF8('我是谁', '我是我')
┌─editDistanceUTF8('我是谁', '我是我')──┐
│ 1 │
└─────────────────────────────────────┘
تمت إضافته في: v21.1.0
يُهرِّب الأحرف لإدراج السلسلة في عقدة نصية في XML أو في سمة.
الصيغة
المعاملات
s — السلسلة النصية المطلوب تهريب محارفها. String
القيمة المُعادة
تُعيد السلسلة النصية بعد تهريب محارفها. String
أمثلة
مثال على الاستخدام
SELECT
'<tag>Hello & "World"</tag>' AS original,
encodeXMLComponent('<tag>Hello & "World"</tag>') AS xml_encoded;
┌─original───────────────────┬─xml_encoded──────────────────────────────────────────┐
│ <tag>Hello & "World"</tag> │ <tag>Hello & "World"</tag> │
└────────────────────────────┴──────────────────────────────────────────────────────┘
أُضيف في: v1.1.0
يتحقق مما إذا كانت السلسلة تنتهي باللاحقة المحددة.
الصيغة
المعاملات
s — السلسلة النصية المراد التحقق منها. String
suffix — اللاحقة المراد التحقق منها. String
القيمة المُعادة
تعيد 1 إذا كانت s تنتهي بـ suffix، وإلا فتعيد 0. UInt8
أمثلة
مثال للاستخدام
SELECT endsWith('ClickHouse', 'House');
┌─endsWith('Cl⋯', 'House')─┐
│ 1 │
└──────────────────────────┘
أُضيف في: v25.10.0
يتحقق مما إذا كانت السلسلة تنتهي باللاحقة المقدَّمة مع تجاهل حالة الأحرف.
الصيغة
endsWithCaseInsensitive(s, suffix)
المعاملات
s — سلسلة المراد التحقق منها. String
suffix — اللاحقة غير الحساسة لحالة الأحرف المراد التحقق منها. String
القيمة المعادة
تعيد 1 إذا كانت s تنتهي باللاحقة suffix دون حساسية لحالة الأحرف، وإلا فتعيد 0. UInt8
أمثلة
مثال استخدام
SELECT endsWithCaseInsensitive('ClickHouse', 'HOUSE');
┌─endsWithCaseInsensitive('Cl⋯', 'HOUSE')─┐
│ 1 │
└─────────────────────────────────────────┘
endsWithCaseInsensitiveUTF8
أُضيفت في: v25.10.0
تُرجع ما إذا كانت السلسلة s تنتهي باللاحقة suffix مع تجاهل حالة الأحرف.
تفترض أن السلسلة تحتوي على نص صالح بترميز UTF-8.
إذا انتُهك هذا الافتراض، فلا يُطرَح أي استثناء وتكون النتيجة غير معرّفة.
الصيغة
endsWithCaseInsensitiveUTF8(s, suffix)
المعاملات
s — السلسلة النصية المطلوب التحقق منها. String
suffix — اللاحقة المطلوب التحقق منها دون مراعاة حالة الأحرف. String
القيمة المُعادة
يُرجع 1 إذا كانت s تنتهي باللاحقة suffix دون مراعاة حالة الأحرف، وإلا فيُرجع 0. UInt8
أمثلة
مثال للاستخدام
SELECT endsWithCaseInsensitiveUTF8('данных', 'ых');
┌─endsWithCaseInsensitiveUTF8('данных', 'ых')─┐
│ 1 │
└─────────────────────────────────────────────┘
استُحدثت في: v23.8.0
تُرجع ما إذا كانت السلسلة s تنتهي باللاحقة suffix.
تفترض أن السلسلة تحتوي على نص صحيح بترميز UTF-8.
إذا لم يصح هذا الافتراض، فلا يُطرَح أي استثناء وتكون النتيجة غير معرّفة.
الصيغة
المعاملات
s — السلسلة النصية المطلوب التحقق منها. String
suffix — اللاحقة المطلوب التحقق منها. String
القيمة المُعادة
تُعيد 1 إذا كانت s تنتهي بـ suffix، وإلا فتُعيد 0. UInt8
أمثلة
مثال على الاستخدام
SELECT endsWithUTF8('данных', 'ых');
┌─endsWithUTF8('данных', 'ых')─┐
│ 1 │
└──────────────────────────────┘
قُدِّمت في: v21.3.0
تستخرج المحتوى النصي من HTML أو XHTML.
تزيل هذه الدالة وسوم HTML والتعليقات وعناصر script/style، ولا تُبقي إلا المحتوى النصي. وهي تتعامل مع:
- إزالة جميع وسوم HTML/XML
- إزالة التعليقات (
{/* */})
- إزالة عناصر script وstyle مع محتواها
- معالجة مقاطع CDATA (تُنسخ حرفيًا كما هي)
- التعامل الصحيح مع المسافات البيضاء وتوحيدها
ملاحظة: لا يتم فك ترميز كيانات HTML، ويجب معالجتها بدالة منفصلة إذا لزم الأمر.
الصيغة
extractTextFromHTML(html)
المعاملات
html — String يحتوي على محتوى HTML لاستخراج النص منه. String
القيمة المعادة
يعيد محتوى النص المستخرج بعد توحيد المسافات البيضاء. String
أمثلة
مثال على الاستخدام
SELECT extractTextFromHTML('
<html>
<head><title>Page Title</title></head>
<body>
<p>Hello <b>World</b>!</p>
<script>alert("test");</script>
<!-- comment -->
</body>
</html>
');
┌─extractTextFromHTML('<html><head>...')─┐
│ Page Title Hello World! │
└────────────────────────────────────────┘
أُضيفت في: v23.7.0
تُرجع السطر الأول من سلسلة نصية متعددة الأسطر.
الصيغة
المعاملات
القيمة المُعادة
يعيد السطر الأول من سلسلة الإدخال، أو السلسلة كاملةً إذا لم تكن هناك فواصل أسطر. String
أمثلة
مثال للاستخدام
SELECT firstLine('foo\\nbar\\nbaz')
┌─firstLine('foo\nbar\nbaz')─┐
│ foo │
└────────────────────────────┘
استُحدث في: v24.1.0
يعيد التمثيل بصيغة Unicode (UTF-8) (خوارزمية ToUnicode) لاسم نطاق وفقًا لآلية Internationalized Domain Names in Applications (IDNA).
في حال حدوث خطأ (على سبيل المثال، إذا كانت قيمة الإدخال غير صالحة)، تُعاد سلسلة الإدخال.
لاحظ أن التكرار في تطبيق كلٍّ من idnaEncode() وidnaDecode() لا يعيد بالضرورة السلسلة الأصلية بسبب تسوية حالة الأحرف.
الصيغة
المعاملات
القيمة المُعادة
يعيد تمثيل Unicode (UTF-8) لسلسلة الإدخال وفقًا لآلية IDNA لقيمة الإدخال. String
أمثلة
مثال على الاستخدام
SELECT idnaDecode('xn--strae-oqa.xn--mnchen-3ya.de')
┌─idnaDecode('xn--strae-oqa.xn--mnchen-3ya.de')─┐
│ straße.münchen.de │
└───────────────────────────────────────────────┘
قُدِّم في: v24.1.0
يعيد التمثيل بصيغة ASCII (خوارزمية ToASCII) لاسم نطاق وفقًا لآلية أسماء النطاقات الدولية في التطبيقات (IDNA).
يجب أن تكون سلسلة الإدخال بترميز UTF وقابلة للتحويل إلى سلسلة ASCII، وإلا فسيتم طرح استثناء.
لا يُجرى أي فك لترميز النسبة المئوية أو إزالة لعلامات الجدولة أو المسافات أو محارف التحكّم.
الصيغة
المعاملات
القيمة المُعادة
تُرجع تمثيلًا بصيغة ASCII لسلسلة الإدخال وفقًا لآلية IDNA الخاصة بقيمة الإدخال. String
أمثلة
مثال على الاستخدام
SELECT idnaEncode('straße.münchen.de')
┌─idnaEncode('straße.münchen.de')─────┐
│ xn--strae-oqa.xn--mnchen-3ya.de │
└─────────────────────────────────────┘
أُضيفت في: v23.7.0
تحوّل الحرف الأول من كل كلمة إلى حرف كبير، وتحول بقية الأحرف إلى أحرف صغيرة.
والكلمات هي سلاسل من الأحرف والأرقام تفصل بينها محارف غير أبجدية رقمية.
لأن initcap يحوّل فقط الحرف الأول من كل كلمة إلى حرف كبير، فقد تلاحظ سلوكًا غير متوقع في الكلمات التي تحتوي على فاصلات عليا أو أحرف كبيرة.
هذا سلوك معروف، ولا توجد حاليًا أي خطط لإصلاحه.
الصيغة
المعاملات
القيمة المعادة
تعيد s بعد تحويل الحرف الأول من كل كلمة إلى حرف كبير. String
أمثلة
مثال على الاستخدام
SELECT initcap('building for fast')
┌─initcap('building for fast')─┐
│ Building For Fast │
└──────────────────────────────┘
مثال على سلوك معروف للكلمات التي تحتوي على فاصلات عليا أو أحرف كبيرة
SELECT initcap('John''s cat won''t eat.');
┌─initcap('Joh⋯n\'t eat.')─┐
│ John'S Cat Won'T Eat. │
└──────────────────────────┘
أُضيفت في: v23.7.0
مثل initcap، تحوّل initcapUTF8 الحرف الأول من كل كلمة إلى حرف كبير وباقي الأحرف إلى أحرف صغيرة.
يفترض أن السلسلة تحتوي على نص صالح بترميز UTF-8.
إذا لم يتحقق هذا الافتراض، فلا يُطرَح أي استثناء وتكون النتيجة غير معرّفة.
لا تكتشف هذه الدالة اللغة؛ فعلى سبيل المثال، قد لا تكون النتيجة صحيحة تمامًا في التركية (i/İ مقابل i/I).
إذا اختلف طول تسلسل بايتات UTF-8 بين الحالتين الكبيرة والصغيرة لنقطة ترميز، فقد تكون النتيجة غير صحيحة لهذه النقطة الترميزية.
الصيغة
المعاملات
s — السلسلة النصية المُدخلة. String
القيمة المُعادة
يعيد s بعد تحويل الحرف الأول من كل كلمة إلى حرف كبير. String
أمثلة
مثال على الاستخدام
SELECT initcapUTF8('не тормозит')
┌─initcapUTF8('не тормозит')─┐
│ Не Тормозит │
└────────────────────────────┘
أُضيفت في: v25.9.0
تُرجع 1 إذا كانت قيمة String أو FixedString المُدخلة تحتوي فقط على بايتات ASCII (0x00–0x7F)، وإلا فتُرجع 0. وهي مُحسّنة للحالة الإيجابية (أي عندما يكون المُدخل ASCII صالحًا).
الصيغة
اسم بديل: isASCII
المعاملات
القيمة المُعادة
أمثلة
isValidASCII
SELECT isValidASCII('hello') AS is_ascii, isValidASCII('你好') AS is_not_ascii
استُحدث في: v20.1.0
يتحقق مما إذا كانت مجموعة البايتات تمثل نصًا صحيحًا بترميز UTF-8.
الصيغة
المعاملات
s — السلسلة المطلوب التحقّق من صلاحية ترميزها بتنسيق UTF-8. String
القيمة المُعادة
تُرجِع 1 إذا كانت مجموعة البايتات تُشكّل نصًا صالحًا بترميز UTF-8، وإلا فتُرجِع 0. UInt8
أمثلة
مثال على الاستخدام
SELECT isValidUTF8('\\xc3\\xb1') AS valid, isValidUTF8('\\xc3\\x28') AS invalid
┌─valid─┬─invalid─┐
│ 1 │ 0 │
└───────┴─────────┘
قُدِّمت في: v24.1.0
يحسب تشابه Jaro بين سلسلتين من البايتات.
الصيغة
المعاملات
s1 — سلسلة الإدخال الأولى. String
s2 — سلسلة الإدخال الثانية. String
القيمة المُعادة
تُرجِع قيمة تشابه Jaro بين السلسلتين. Float64
أمثلة
مثال على الاستخدام
SELECT jaroSimilarity('clickhouse', 'click')
┌─jaroSimilarity('clickhouse', 'click')─┐
│ 0.8333333333333333 │
└───────────────────────────────────────┘
أُضيفت في: v24.1.0
تحسب تشابه Jaro-Winkler بين سلسلتي بايتات.
الصيغة
jaroWinklerSimilarity(s1, s2)
المعاملات
s1 — سلسلة الإدخال الأولى. String
s2 — سلسلة الإدخال الثانية. String
القيمة المُعادة
تعيد قيمة تشابه Jaro-Winkler بين السلسلتين. Float64
أمثلة
مثال على الاستخدام
SELECT jaroWinklerSimilarity('clickhouse', 'click')
┌─jaroWinklerSimilarity('clickhouse', 'click')─┐
│ 0.8999999999999999 │
└──────────────────────────────────────────────┘
أُضيفت في: v22.1.0
تُرجع سلسلة فرعية من السلسلة s وفق قيمة offset المحددة، بدءًا من اليسار.
الصيغة
المعاملات
القيمة المعادة
يعيد:
- إذا كانت قيمة
offset موجبة، فستكون النتيجة سلسلة فرعية من s بطول offset بايتًا، تبدأ من يسار السلسلة.
- إذا كانت قيمة
offset سالبة، فستكون النتيجة سلسلة فرعية من s بطول length(s) - |offset| بايتًا، تبدأ من يسار السلسلة.
- سلسلة فارغة إذا كانت
length تساوي 0.
String
أمثلة
إزاحة موجبة
SELECT left('Hello World', 5)
الإزاحة السالبة
SELECT left('Hello World', -6)
تم تقديمه في: v21.8.0
يضيف حشوة إلى يسار سلسلة نصية باستخدام مسافات أو سلسلة نصية محددة (وتُكرَّر عند الحاجة) حتى يصل طول السلسلة الناتجة إلى قيمة length المحددة.
الصيغة
leftPad(string, length[, pad_string])
اسم بديل: lpad
المعاملات
string — سلسلة الإدخال المطلوب حشوها. String
length — طول السلسلة الناتجة. إذا كانت القيمة أصغر من طول سلسلة الإدخال، فستُختصر سلسلة الإدخال إلى length حرفًا. (U)Int*
pad_string — اختياري. السلسلة المستخدمة لحشو سلسلة الإدخال. إذا لم تُحدَّد، فستُحشى سلسلة الإدخال بمسافات. String
القيمة المعادة
تعيد سلسلة محشوة من اليسار بالطول المحدد. String
أمثلة
مثال على الاستخدام
SELECT leftPad('abc', 7, '*'), leftPad('def', 7)
┌─leftPad('abc', 7, '*')─┬─leftPad('def', 7)─┐
│ ****abc │ def │
└────────────────────────┴───────────────────┘
أُضيف في: v21.8.0
يملأ سلسلة UTF8 النصية من اليسار بمسافات أو بسلسلة محددة (عدة مرات عند الحاجة) حتى يصل طول السلسلة الناتجة إلى الطول المحدد.
وعلى خلاف leftPad الذي يقيس طول السلسلة بالبايتات، يُقاس طول السلسلة بنقاط الترميز.
الصيغة
leftPadUTF8(string, length[, pad_string])
المعاملات
string — سلسلة الإدخال المطلوب حشوها. String
length — طول السلسلة الناتجة. إذا كانت القيمة أصغر من طول سلسلة الإدخال، فستُقصَّر سلسلة الإدخال إلى length حرفًا. (U)Int*
pad_string — اختياري. السلسلة المستخدمة لحشو سلسلة الإدخال. إذا لم يتم تحديدها، فسيُحشَى الإدخال بمسافات. String
القيمة المُعادة
يعيد سلسلة محشوة من اليسار بالطول المحدد. String
أمثلة
مثال على الاستخدام
SELECT leftPadUTF8('абвг', 7, '*'), leftPadUTF8('дежз', 7)
┌─leftPadUTF8('абвг', 7, '*')─┬─leftPadUTF8('дежз', 7)─┐
│ ***абвг │ дежз │
└─────────────────────────────┴────────────────────────┘
أُضيف في: v22.1.0
يعيد سلسلة فرعية من السلسلة النصية s المرمّزة بترميز UTF-8 باستخدام offset محدد يبدأ من اليسار.
الصيغة
المعاملات
s — السلسلة النصية المرمّزة بترميز UTF-8 المراد استخراج مقطع فرعي منها. String أو FixedString
offset — عدد بايتات الإزاحة. (U)Int*
القيمة المعادة
يعيد:
- إذا كانت قيمة
offset موجبة، يُعاد مقطع فرعي من s بطول offset بايتًا، بدءًا من يسار السلسلة النصية.\n”
- إذا كانت قيمة
offset سالبة، يُعاد مقطع فرعي من s بطول length(s) - |offset| بايتًا، بدءًا من يسار السلسلة النصية.\n”
- سلسلة نصية فارغة إذا كانت
length تساوي 0.
String
أمثلة
إزاحة موجبة
SELECT leftUTF8('Привет', 4)
الإزاحة السالبة
SELECT leftUTF8('Привет', -4)
تم تقديمها في: v1.1.0
تعيد طول سلسلة نصية بعدد نقاط الترميز في Unicode بدلًا من البايتات أو الأحرف.
وتفترض أن السلسلة تحتوي على نص صالح مُرمَّز بترميز UTF-8.
إذا لم يتحقق هذا الافتراض، فلا يُطرح أي استثناء وتكون النتيجة غير معرّفة.
الصيغة
الأسماء البديلة: CHARACTER_LENGTH, CHAR_LENGTH
المعاملات
s — String يحتوي على نص صالح مُرمَّز بترميز UTF-8. String
القيمة المعادة
طول السلسلة s محسوبًا بعدد نقاط الترميز في Unicode. UInt64
أمثلة
مثال على الاستخدام
SELECT lengthUTF8('Здравствуй, мир!')
┌─lengthUTF8('Здравствуй, мир!')─┐
│ 16 │
└────────────────────────────────┘
أُضيفت في: v1.1.0
يحوّل سلسلة ASCII إلى أحرف صغيرة.
الصيغة
الأسماء البديلة: lcase
الوسائط
s — سلسلة نصية لتحويلها إلى أحرف صغيرة. String
القيمة المعادة
تُرجِع سلسلة نصية من s بأحرف صغيرة. String
أمثلة
مثال على الاستخدام
SELECT lower('CLICKHOUSE')
┌─lower('CLICKHOUSE')─┐
│ clickhouse │
└─────────────────────┘
أُضيفت في: v1.1.0
تُحوِّل سلسلة نصية إلى أحرف صغيرة، على افتراض أن السلسلة تحتوي على نص صالح مُرمَّز بترميز UTF-8. وإذا لم يتحقق هذا الافتراض، فلا يتم طرح أي استثناء وتكون النتيجة غير معرّفة.
البنية
الوسائط
input — السلسلة النصية المُدخلة المطلوب تحويلها إلى أحرف صغيرة. String
القيمة المُعادة
تعيد سلسلة نصية بأحرف صغيرة. String
أمثلة
الأول
SELECT lowerUTF8('München') as Lowerutf8;
قُدِّمت في: v26.3.0
تُستخدم هذه الدالة للفرز الطبيعي.
البنية
الأسماء البديلة: NATURAL_SORT_KEY
المعاملات
s — سلسلة نصية لتحويلها إلى مفتاح فرز طبيعي. String
القيمة المُعادة
يعيد سلسلة نصية لمفتاح فرز طبيعي من s. String
أمثلة
مثال على الاستخدام
SELECT s FROM t ORDER BY naturalSortKey(s)
┌─s───┐
│ a1 │
| a02 │
└─────┘
قُدِّمت في: v21.11.0
تُطبِّع سلسلة UTF-8 وفقًا لـ صيغة التطبيع NFC.
البنية
المعاملات
str — سلسلة الإدخال المرمّزة بترميز UTF-8. String
القيمة المُعادة
تعيد الصيغة المُطبَّعة وفق NFC لسلسلة UTF-8. String
أمثلة
مثال على الاستخدام
SELECT
'é' AS original, -- e + combining acute accent (U+0065 + U+0301)
length(original),
normalizeUTF8NFC('é') AS nfc_normalized, -- é (U+00E9)
length(nfc_normalized);
┌─original─┬─length(original)─┬─nfc_normalized─┬─length(nfc_normalized)─┐
│ é │ 2 │ é │ 2 │
└──────────┴──────────────────┴────────────────┴────────────────────────┘
تم تقديمها في: v21.11.0
تُطبِّع سلسلة نصية بترميز UTF-8 وفقًا لـ صيغة التطبيع NFD.
الصيغة
الوسيطات
str — سلسلة الإدخال المرمّزة بترميز UTF-8. String
القيمة المعادة
تعيد الصيغة المعيارية NFD للسلسلة المرمّزة بترميز UTF-8. String
أمثلة
مثال على الاستخدام
SELECT
'é' AS original, -- é (U+00E9)
length(original),
normalizeUTF8NFD('é') AS nfd_normalized, -- e + combining acute (U+0065 + U+0301)
length(nfd_normalized);
┌─original─┬─length(original)─┬─nfd_normalized─┬─length(nfd_normalized)─┐
│ é │ 2 │ é │ 3 │
└──────────┴──────────────────┴────────────────┴────────────────────────┘
أُضيف في: v21.11.0
يُطبِّع سلسلة نصية بترميز UTF-8 وفقًا لـصيغة التطبيع NFKC.
البنية
الوسائط
str — السلسلة النصية المُدخلة والمشفَّرة بترميز UTF-8. String
القيمة المُعادة
تُعيد الصيغة المعيارية NFKC لسلسلة UTF-8 النصية. String
أمثلة
مثال على الاستخدام
SELECT
'① ② ③' AS original, -- Circled number characters
normalizeUTF8NFKC('① ② ③') AS nfkc_normalized; -- Converts to 1 2 3
┌─original─┬─nfkc_normalized─┐
│ ① ② ③ │ 1 2 3 │
└──────────┴─────────────────┘
normalizeUTF8NFKCCasefold
أُضيف في: v26.3.0
يُطبِّع سلسلة UTF-8 وفقًا لـ صيغة التطبيع NFKC_Casefold، إذ يطبّق تطبيع NFKC ثم يجري طيّ حالة الأحرف.
وهذا مفيد لمطابقة المعرّفات دون مراعاة حالة الأحرف.
البنية
normalizeUTF8NFKCCasefold(str)
الوسائط
str — سلسلة الإدخال المرمّزة بترميز UTF-8. String
القيمة المُعادة
تُرجع الشكل المعياري NFKC_Casefold لسلسلة UTF-8. String
أمثلة
مثال على الاستخدام
SELECT
'Ä ① Hello' AS original,
normalizeUTF8NFKCCasefold('Ä ① Hello') AS nfkc_cf_normalized;
┌─original───┬─nfkc_cf_normalized─┐
│ Ä ① Hello │ ä 1 hello │
└────────────┴────────────────────┘
أُضيف في: v21.11.0
يُطبِّع سلسلة UTF-8 وفق صيغة التطبيع NFKD.
البنية
الوسيطات
str — سلسلة إدخال مرمّزة بترميز UTF-8. سلسلة
القيمة المعادة
تُرجع الشكل المُطبَّع وفق NFKD لسلسلة UTF-8. سلسلة
أمثلة
مثال على الاستخدام
SELECT
'H₂O²' AS original, -- H + subscript 2 + O + superscript 2
normalizeUTF8NFKD('H₂O²') AS nfkd_normalized; -- Converts to H 2 O 2
┌─original─┬─nfkd_normalized─┐
│ H₂O² │ H2O2 │
└──────────┴─────────────────┘
أُضيف في: v24.1.0
يعيد النص الصريح المُرمَّز بـ UTF8 لسلسلة مُرمَّزة بترميز Punycode.
إذا لم تُعطَ سلسلة صالحة مُرمَّزة بترميز Punycode، فسيتم طرح استثناء.
الصيغة
الوسيطات
s — سلسلة مرمّزة بـ Punycode. String
القيمة المعادة
تعيد النص العادي لقيمة الإدخال. String
أمثلة
مثال استخدام
SELECT punycodeDecode('Mnchen-3ya')
┌─punycodeDecode('Mnchen-3ya')─┐
│ München │
└──────────────────────────────┘
قُدِّم في: v24.1.0
يعيد تمثيل سلسلة نصية بتنسيق Punycode.
يجب أن تكون السلسلة النصية مُرمَّزة بترميز UTF8، وإلا فسيكون السلوك غير محدد.
الصياغة
الوسائط
القيمة المُعادة
تعرض تمثيل Punycode لقيمة الإدخال. String
أمثلة
مثال على الاستخدام
SELECT punycodeEncode('München')
┌─punycodeEncode('München')─┐
│ Mnchen-3ya │
└───────────────────────────┘
أُضيف في: v23.2.0
يستخرج أول سلسلة نصية في haystack تطابق نمط regexp وتتوافق مع فهرس مجموعة regex.
الصيغة
regexpExtract(haystack, pattern[, index])
الأسماء المستعارة: REGEXP_EXTRACT, REGEXP_SUBSTR
الوسائط
haystack — String، السلسلة التي ستتم فيها مطابقة نمط regexp. String
pattern — String، تعبير regexp. قد يحتوي pattern على عدة مجموعات regexp، ويحدد index مجموعة regex المطلوب استخراجها. تشير القيمة 0 إلى مطابقة التعبير النمطي بالكامل. const String
index — اختياري. عدد صحيح غير سالب يحدد مجموعة regex المطلوب استخراجها. القيمة الافتراضية هي 1 إذا كان pattern يحتوي على مجموعة ملتقطة واحدة على الأقل، و0 (المطابقة بالكامل) إذا لم يكن pattern يحتوي على أي مجموعة ملتقطة. (U)Int*
القيمة المُعادة
يعيد سلسلة مطابِقة String
أمثلة
مثال على الاستخدام
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+');
┌─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 │
└──────────────────────────────────────────────┴──────────────────────────────────────────────┴──────────────────────────────────────────────┴───────────────────────────────────────────┴──────────────────────────────────┘
أُضيفت في: v26.5.0
تعيد موضع البايت (ابتداءً من 1) للمطابقة رقم occurrence لـ pattern داخل haystack، مع بدء البحث من موضع البايت position.
إذا كانت return_option تساوي 0 (الافتراضي)، فسيُعاد موضع أول بايت في المطابقة. وإذا كانت تساوي 1، فسيُعاد موضع أول بايت بعد المطابقة.
إذا كانت subexpression أكبر من 0، فسيُعاد موضع مجموعة الالتقاط المقابلة بدلًا من المطابقة بأكملها.
تعيد 0 إذا لم يُعثر على أي مطابقة، أو إذا لم تشارك مجموعة الالتقاط المطلوبة في المطابقة.
يُوفَّر هذا للتوافق مع regexp_instr في PostgreSQL (وهو متاح أيضًا تحت هذا alias). لاحظ أن المواضع هنا تعتمد على البايتات، بما يتوافق مع دوال Regex الأخرى في ClickHouse؛ بينما يعتمد regexp_instr في PostgreSQL على المحارف.
البنية
regexpPosition(haystack, pattern[, position[, occurrence[, return_option[, flags[, subexpression]]]]])
الأسماء البديلة: regexpInstr, regexp_instr
الوسائط
haystack — السلسلة المراد البحث فيها. String
pattern — نمط التعبير النمطي. const String
position — اختياري. موضع البايت المعتمد على 1 لبدء البحث. القيمة الافتراضية: 1. (U)Int*
occurrence — اختياري. يحدد أي تطابق يجب إرجاعه. القيمة الافتراضية: 1. (U)Int*
return_option — اختياري. تُرجع القيمة 0 موضع بداية التطابق، وتُرجع القيمة 1 الموضع الذي يلي التطابق مباشرةً. القيمة الافتراضية: 0. (U)Int*
flags — اختياري. خيارات Regex. القيم المدعومة: i (غير حساس لحالة الأحرف)، c (حساس لحالة الأحرف)، m/n (مراسي متعددة الأسطر)، s (النقطة تطابق سطرًا جديدًا). القيمة الافتراضية: فارغ. const String
subexpression — اختياري. فهرس مجموعة الالتقاط المطلوب إرجاع موضعها. 0 تعني التطابق الكامل. القيمة الافتراضية: 0. (U)Int*
القيمة المُعادة
تُرجع موضع البايت للتطابق، أو 0 إذا لم يتم العثور عليه. UInt64
أمثلة
الاستخدام الأساسي
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);
┌─...─┬─...─┬─...─┬─...─┬─...─┐
│ 7 │ 4 │ 5 │ 7 │ 10 │
└─────┴─────┴─────┴─────┴─────┘
أُضيف في: v26.3.0
يزيل العلامات التشكيلية (اللكنات) من سلسلة UTF-8 عبر تفكيك المحارف باستخدام NFD،
وإزالة علامات الدمج (الفئة Mn في Unicode)، ثم إعادة تركيبها باستخدام NFC.
البنية
removeDiacriticsUTF8(str)
الأسماء البديلة: removeAccentsUTF8
المعاملات
str — سلسلة إدخال بترميز UTF-8. String
القيمة المُعادة
سلسلة UTF-8 بعد إزالة علامات التشكيل منها. String
أمثلة
إزالة علامات التشكيل الأساسية
SELECT removeDiacriticsUTF8('café résumé naïve')
┌─removeDiacriticsUTF8('café résumé naïve')─┐
│ cafe resume naive │
└────────────────────────────────────────────┘
أُضيف في: v20.1.0
يُكرّر السلسلة النصية بضمّها إلى نفسها بعدد المرات المحدد.
الصيغة
الوسيطات
s — السلسلة المطلوب تكرارها. String
n — عدد مرات تكرار السلسلة. (U)Int*
القيمة المُعادة
سلسلة تتكوّن من تكرار السلسلة s عدد n من المرات. إذا كانت n سالبة، فتعيد الدالة سلسلة فارغة. String
أمثلة
مثال على الاستخدام
┌─repeat('abc', 10)──────────────┐
│ abcabcabcabcabcabcabcabcabcabc │
└────────────────────────────────┘
أُضيف في: v1.1.0
يعكس تسلسل نقاط ترميز Unicode في سلسلة نصية.
يفترض أن السلسلة النصية تحتوي على نص صالح بترميز UTF-8.
إذا لم يتحقق هذا الافتراض، فلا يتم طرح أي استثناء وتكون النتيجة غير معرّفة.
الصياغة
الوسيطات
s — سلسلة تحتوي على نص صالح بترميز UTF-8. سلسلة
القيمة المعادة
تعيد سلسلةً يكون فيها تسلسل نقاط Unicode البرمجية معكوسًا. سلسلة
أمثلة
مثال على الاستخدام
SELECT reverseUTF8('ClickHouse')
أُضيفت في: v22.1.0
تعيد سلسلة فرعية من السلسلة s بإزاحة offset محددة تبدأ من اليمين.
البنية
الوسيطات
القيمة المُعادة
تعيد:
- إذا كانت
offset موجبة، فستُعاد سلسلة فرعية من s بطول offset بايتًا، بدءًا من يمين السلسلة.
- إذا كانت
offset سالبة، فستُعاد سلسلة فرعية من s بطول length(s) - |offset| بايتًا، بدءًا من يمين السلسلة.
- سلسلة فارغة إذا كانت
length تساوي 0.
String
أمثلة
إزاحة موجبة
إزاحة سلبية
SELECT right('Hello', -3)
أُضيفت في: v21.8.0
تُبطّن سلسلة نصية من اليمين بالمسافات أو بسلسلة نصية محددة (تُكرَّر عدة مرات عند الحاجة) حتى يبلغ طول السلسلة الناتجة القيمة length المحددة.
البنية
rightPad(string, length[, pad_string])
الأسماء البديلة: rpad
الوسيطات
string — سلسلة الإدخال المطلوب حشوها. String
length — طول السلسلة الناتجة. إذا كانت القيمة أصغر من طول سلسلة الإدخال، فسيتم تقصير سلسلة الإدخال إلى length حرفًا. (U)Int*
pad_string — اختياري. السلسلة المستخدمة لحشو سلسلة الإدخال. إذا لم يتم تحديدها، فسيتم حشو سلسلة الإدخال بمسافات. String
القيمة المعادة
تعيد سلسلة محشوة من الجهة اليمنى بالطول المحدد. String
أمثلة
مثال على الاستخدام
SELECT rightPad('abc', 7, '*'), rightPad('abc', 7)
┌─rightPad('abc', 7, '*')─┬─rightPad('abc', 7)─┐
│ abc**** │ abc │
└─────────────────────────┴────────────────────┘
أُضيفت في: v21.8.0
تُبطّن السلسلة من اليمين بمسافات أو بسلسلة محددة (عدة مرات عند الحاجة) حتى يصل طول السلسلة الناتجة إلى الطول المحدد.
وعلى عكس rightPad الذي يقيس طول السلسلة بالبايتات، يُقاس طول السلسلة هنا بنقاط الترميز.
الصيغة
rightPadUTF8(string, length[, pad_string])
الوسيطات
string — سلسلة الإدخال المطلوب ملؤها. String
length — طول السلسلة الناتجة. إذا كانت القيمة أصغر من طول سلسلة الإدخال، فسيتم اختصار سلسلة الإدخال إلى length حرفًا. (U)Int*
pad_string — اختياري. السلسلة المستخدمة لملء سلسلة الإدخال. إذا لم يتم تحديدها، فستُملأ سلسلة الإدخال بمسافات. String
القيمة المعادة
تعيد سلسلة مملوءة من اليمين بالطول المحدد. String
أمثلة
مثال على الاستخدام
SELECT rightPadUTF8('абвг', 7, '*'), rightPadUTF8('абвг', 7)
┌─rightPadUTF8('абвг', 7, '*')─┬─rightPadUTF8('абвг', 7)─┐
│ абвг*** │ абвг │
└──────────────────────────────┴─────────────────────────┘
قُدِّم في: v22.1.0
يُرجع سلسلة فرعية من السلسلة s المرمّزة بترميز UTF-8، بإزاحة offset محددة تبدأ من اليمين.
البنية
الوسائط
s — السلسلة النصية المرمّزة بترميز UTF-8 المطلوب استخراج سلسلة فرعية منها. String أو FixedString
offset — عدد بايتات الإزاحة. (U)Int*
القيمة المعادة
يعيد:
- إذا كانت
offset موجبة، فتُعاد سلسلة فرعية من s بطول offset بايت، تبدأ من يمين السلسلة النصية.
- إذا كانت
offset سالبة، فتُعاد سلسلة فرعية من s بطول length(s) - |offset| بايت، تبدأ من يمين السلسلة النصية.
- سلسلة نصية فارغة إذا كانت
length تساوي 0.
String
أمثلة
إزاحة موجبة
SELECT rightUTF8('Привет', 4)
OFFSET السالب
SELECT rightUTF8('Привет', -4)
أُضيف في: v23.4.0
يُرجع رمز Soundex لنص.
الصيغة
المعاملات
القيمة المُعادة
يعيد رمز Soundex لسلسلة الإدخال. String
أمثلة
مثال على الاستخدام
┌─soundex('aksel')─┐
│ A240 │
└──────────────────┘
أُضيفت في: v23.5.0
يكرّر مسافة ( ) بعدد المرات المحدد.
البنية
المعاملات
n — عدد مرات تكرار المسافة. (U)Int*
القيمة المعادة
تُرجِع سلسلة نصية تحتوي على مسافة مكررة n مرة. إذا كان n <= 0، فستُرجِع الدالة سلسلة فارغة. String
أمثلة
مثال على الاستخدام
SELECT space(3) AS res, length(res);
┌─res─┬─length(res)─┐
│ │ 3 │
└─────┴─────────────┘
قُدِّمت في: v25.5.0
تعثر على جميع السلاسل الفرعية في سلسلة نصية معيّنة التي لا يقل طولها عن n،
بحيث تكون قيم التجزئة لـ (n-1)-grams عند أطراف السلسلة الفرعية
أكبر بشكل صارم من قيم أي (n-1)-gram داخل السلسلة الفرعية.
تستخدم CRC32 بوصفها دالة تجزئة.
الصيغة
sparseGrams(s[, min_ngram_length[, max_ngram_length[, min_cutoff_length]]])
الوسيطات
s — سلسلة نصية مُدخلة. String
min_ngram_length — اختياري. الحد الأدنى لطول الـ n-gram المستخرج. القيمة الافتراضية والدنيا هي 3. UInt*
max_ngram_length — اختياري. الحد الأقصى لطول الـ n-gram المستخرج. القيمة الافتراضية هي 100. يجب ألا تقل قيمته عن min_ngram_length. UInt*
min_cutoff_length — اختياري. إذا تم تحديده، فلن تُعاد إلا n-grams التي يكون طولها أكبر من أو يساوي min_cutoff_length. القيمة الافتراضية هي نفسها min_ngram_length. يجب ألا تقل قيمته عن min_ngram_length وألا تزيد على max_ngram_length. UInt*
القيمة المُعادة
يعيد مصفوفة من المقاطع الفرعية المحددة. Array(String)
أمثلة
مثال على الاستخدام
SELECT sparseGrams('alice', 3)
┌─sparseGrams('alice', 3)────────────┐
│ ['ali','lic','lice','ice'] │
└────────────────────────────────────┘
أُضيف في: v25.5.0
يبحث عن قيم تجزئة لجميع السلاسل الفرعية في سلسلة نصية معيّنة التي لا يقل طولها عن n،
بحيث تكون قيم تجزئة لـ (n-1)-grams عند حدود السلسلة الفرعية
أكبر بشكل صارم من قيم أي (n-1)-gram داخل السلسلة الفرعية.
يستخدم CRC32 بوصفها دالة تجزئة.
البنية
sparseGramsHashes(s[, min_ngram_length, max_ngram_length])
الوسيطات
s — سلسلة إدخال. String
min_ngram_length — اختياري. الحد الأدنى لطول ngram المستخرج. القيمة الافتراضية والدنيا هي 3. UInt*
max_ngram_length — اختياري. الحد الأقصى لطول ngram المستخرج. القيمة الافتراضية هي 100. ويجب ألا تقل عن min_ngram_length. UInt*
min_cutoff_length — اختياري. إذا تم تحديده، فلن تُعاد إلا n-grams التي يكون طولها أكبر من أو يساوي min_cutoff_length. القيمة الافتراضية هي نفسها min_ngram_length. ويجب ألا تقل عن min_ngram_length وألا تزيد على max_ngram_length. UInt*
القيمة المعادة
تُرجع مصفوفة من قيم تجزئة CRC32 للسلاسل الفرعية المحددة. Array(UInt32)
أمثلة
مثال على الاستخدام
SELECT sparseGramsHashes('alice', 3)
┌─sparseGramsHashes('alice', 3)──────────────────────┐
│ [1481062250,2450405249,4012725991,1918774096] │
└────────────────────────────────────────────────────┘
أُضيفت في: v25.5.0
تعثر على قيم التجزئة لجميع المقاطع الفرعية لسلسلة UTF-8 معيّنة التي لا يقل طولها عن n، حيث تكون قيم تجزئة مقاطع (n-1)-gram عند حدود المقطع الفرعي أكبر تمامًا من قيم تجزئة أي مقطع (n-1)-gram داخله.
تتوقع سلسلة UTF-8، وتطرح استثناءً إذا كان تسلسل UTF-8 غير صالح.
تستخدم CRC32 كدالة تجزئة.
البنية
sparseGramsHashesUTF8(s[, min_ngram_length, max_ngram_length])
الوسيطات
s — سلسلة إدخال. String
min_ngram_length — اختياري. الحد الأدنى لطول ngram المستخرج. القيمة الافتراضية والدنيا هي 3. UInt*
max_ngram_length — اختياري. الحد الأقصى لطول ngram المستخرج. القيمة الافتراضية هي 100. ويجب ألا تقل عن min_ngram_length. UInt*
min_cutoff_length — اختياري. إذا تم تحديده، فستُعاد فقط n-grams التي يكون طولها أكبر من أو يساوي min_cutoff_length. القيمة الافتراضية هي نفسها min_ngram_length. ويجب ألا تقل عن min_ngram_length وألا تزيد على max_ngram_length. UInt*
القيمة المعادة
يعيد مصفوفة من تجزئات CRC32 لسلاسل UTF-8 الفرعية المحددة. Array(UInt32)
أمثلة
مثال على الاستخدام
SELECT sparseGramsHashesUTF8('алиса', 3)
┌─sparseGramsHashesUTF8('алиса', 3)─┐
│ [4178533925,3855635300,561830861] │
└───────────────────────────────────┘
أُضيفت في: v25.5.0
تعثر على جميع السلاسل الفرعية في سلسلة UTF-8 معيّنة التي لا يقل طولها عن n، حيث تكون قيم التجزئة لـ (n-1)-grams عند حدود السلسلة الفرعية أكبر بشكل صارم من قيم أي (n-1)-gram داخلها.
تتوقع سلسلة UTF-8، وتُطلق استثناءً في حال وجود تسلسل UTF-8 غير صالح.
تستخدم CRC32 بوصفها دالة تجزئة.
البنية
sparseGramsUTF8(s[, min_ngram_length[, max_ngram_length[, min_cutoff_length]]])
المعاملات
s — سلسلة الإدخال. String
min_ngram_length — اختياري. الحد الأدنى لطول ngram المستخرَج. القيمة الافتراضية والدنيا هي 3. UInt*
max_ngram_length — اختياري. الحد الأقصى لطول ngram المستخرَج. القيمة الافتراضية هي 100. ويجب ألا تقل عن min_ngram_length. UInt*
min_cutoff_length — اختياري. إذا تم تحديده، فلن تُعاد إلا n-grams التي يكون طولها أكبر من أو مساويًا لـ min_cutoff_length. القيمة الافتراضية هي نفسها min_ngram_length. ويجب ألا تقل عن min_ngram_length وألا تزيد على max_ngram_length. UInt*
القيمة المُعادة
تعيد مصفوفة من مقاطع UTF-8 الفرعية المختارة. Array(String)
أمثلة
مثال على الاستخدام
SELECT sparseGramsUTF8('алиса', 3)
┌─sparseGramsUTF8('алиса', 3)─┐
│ ['али','лис','иса'] │
└─────────────────────────────┘
قُدِّمت في: v1.1.0
يتحقق مما إذا كانت السلسلة النصية تبدأ بالسلسلة النصية المحددة.
الصيغة
الوسائط
s — السلسلة المطلوب التحقق منها. String
prefix — البادئة المطلوب التحقق منها. String
القيمة المُعادة
يعيد 1 إذا كانت s تبدأ بـ prefix، وإلا فيعيد 0. UInt8
أمثلة
مثال على الاستخدام
SELECT startsWith('ClickHouse', 'Click');
┌─startsWith('⋯', 'Click')─┐
│ 1 │
└──────────────────────────┘
startsWithCaseInsensitive
أُضيف في: v25.10.0
يتحقق مما إذا كانت السلسلة النصية تبدأ بالسلسلة النصية المحددة مع تجاهل حالة الأحرف.
الصيغة
startsWithCaseInsensitive(s, prefix)
الوسائط
s — السلسلة النصية المطلوب التحقق منها. String
prefix — البادئة المطلوب التحقق منها دون مراعاة حالة الأحرف. String
القيمة المُعادة
يعيد 1 إذا كانت s تبدأ بالبادئة prefix دون مراعاة حالة الأحرف، وإلا فيعيد 0. UInt8
أمثلة
مثال على الاستخدام
SELECT startsWithCaseInsensitive('ClickHouse', 'CLICK');
┌─startsWithCaseInsensitive('⋯', 'CLICK')─┐
│ 1 │
└─────────────────────────────────────────┘
startsWithCaseInsensitiveUTF8
أُضيف في: v25.10.0
يتحقق مما إذا كانت السلسلة تبدأ بالبادئة المُعطاة دون مراعاة حالة الأحرف.
يفترض أن السلسلة تحتوي على نص صالح بترميز UTF-8.
إذا لم يتحقق هذا الافتراض، فلا يُطرَح أي استثناء وتكون النتيجة غير معرّفة.
الصيغة
startsWithCaseInsensitiveUTF8(s, prefix)
الوسائط
s — السلسلة المراد التحقق منها. String
prefix — البادئة المراد التحقق منها، مع تجاهل حالة الأحرف. String
القيمة المُعادة
تُرجع 1 إذا كانت s تبدأ بـ prefix مع تجاهل حالة الأحرف، وإلا تُرجع 0. UInt8
أمثلة
مثال على الاستخدام
SELECT startsWithCaseInsensitiveUTF8('приставка', 'при')
┌─startsWithUT⋯ка', 'при')─┐
│ 1 │
└──────────────────────────┘
أُضيف في: v23.8.0
يتحقق مما إذا كانت السلسلة تبدأ بالبادئة المحددة.
يفترض أن السلسلة تحتوي على نص صالح مُرمَّز بترميز UTF-8.
إذا لم يتحقق هذا الافتراض، فلا يُطرَح أي استثناء وتكون النتيجة غير معرّفة.
الصيغة
startsWithUTF8(s, prefix)
المعاملات
s — السلسلة النصية المطلوب التحقق منها. String
prefix — البادئة المطلوب التحقق منها. String
القيمة المُعادة
يعيد 1 إذا كانت s تبدأ بـ prefix، وإلا فيُعيد 0. UInt8
أمثلة
مثال للاستخدام
SELECT startsWithUTF8('приставка', 'при')
┌─startsWithUT⋯ка', 'при')─┐
│ 1 │
└──────────────────────────┘
أُضيفت في: v25.6.0
تحسب إنتروبيا شانون لتوزيع البايتات في سلسلة نصية.
الصيغة
الوسائط
s — السلسلة النصية المراد تحليلها. String
القيمة المُعادة
تُرجع إنتروبيا شانون لتوزيع البايتات في السلسلة النصية. Float64
أمثلة
مثال على الاستخدام
SELECT stringBytesEntropy('Hello, world!')
┌─stringBytesEntropy('Hello, world!')─┐
│ 3.07049960 │
└─────────────────────────────────────┘
استُحدث في: v25.6.0
يحسب عدد البايتات الفريدة في سلسلة نصية.
الصيغة
الوسائط
s — السلسلة المطلوب تحليلها. String
القيمة المُعادة
يُرجع عدد البايتات المختلفة في السلسلة. UInt16
أمثلة
مثال على الاستخدام
SELECT stringBytesUniq('Hello')
┌─stringBytesUniq('Hello')─┐
│ 4 │
└──────────────────────────┘
قُدِّمت في: v23.11.0
تحسب معامل جاكارد للتشابه بين سلسلتين من البايتات.
الصيغة
stringJaccardIndex(s1, s2)
الوسائط
s1 — سلسلة الإدخال الأولى. String
s2 — سلسلة الإدخال الثانية. String
القيمة المُعادة
تُرجع مؤشر تشابه جاكارد بين السلسلتين. Float64
أمثلة
مثال على الاستخدام
SELECT stringJaccardIndex('clickhouse', 'mouse')
┌─stringJaccardIndex('clickhouse', 'mouse')─┐
│ 0.4 │
└───────────────────────────────────────────┘
تم تقديمه في: v23.11.0
مثل stringJaccardIndex، ولكن للسلاسل النصية المرمّزة بـ UTF8.
الصيغة
stringJaccardIndexUTF8(s1, s2)
الوسائط
s1 — أول سلسلة نصية مُدخلة بترميز UTF8. String
s2 — ثاني سلسلة نصية مُدخلة بترميز UTF8. String
القيمة المعادة
تعيد معامل تشابه Jaccard بين سلسلتي UTF8 النصيتين. Float64
أمثلة
مثال على الاستخدام
SELECT stringJaccardIndexUTF8('我爱你', '我也爱你')
┌─stringJaccardIndexUTF8('我爱你', '我也爱你')─┐
│ 0.75 │
└─────────────────────────────────────────────┘
مُتاحة منذ: v1.1.0
تعيد السلسلة الفرعية من السلسلة s التي تبدأ عند فهرس البايت المحدد offset.
يبدأ عدّ البايتات من 1 وفقًا للمنطق التالي:
- إذا كانت قيمة
offset هي 0، فستُعاد سلسلة فارغة.
- إذا كانت قيمة
offset سالبة، فستبدأ السلسلة الفرعية على بُعد offset حرفًا من نهاية السلسلة بدلًا من بدايتها.
يحدد الوسيط الاختياري length الحد الأقصى لعدد البايتات التي يمكن أن تتضمنها السلسلة الفرعية المعادة.
الصيغة
substring(s, offset[, length])
الأسماء البديلة: byteSlice, mid, substr
الوسائط
s — السلسلة المُراد استخراج مقطع فرعي منها. String أو FixedString أو Enum
offset — موضع بداية المقطع الفرعي في s. (U)Int*
length — اختياري. الحد الأقصى لطول المقطع الفرعي. (U)Int*
القيمة المُعادة
تُرجع مقطعًا فرعيًا من s بطول length بايتًا، بدءًا من الفهرس offset. String
أمثلة
الاستخدام الأساسي
SELECT 'database' AS db, substr(db, 5), substr(db, 5, 1)
┌─db───────┬─substring('database', 5)─┬─substring('database', 5, 1)─┐
│ database │ base │ b │
└──────────┴──────────────────────────┴─────────────────────────────┘
أُضيفت في: v23.7.0
تعيد السلسلة الفرعية من s التي تسبق count من مرات ظهور الفاصل delim، كما في Spark أو MySQL.
الصيغة
substringIndex(s, delim, count)
الأسماء البديلة: SUBSTRING_INDEX
الوسائط
s — السلسلة التي يُستخرَج منها المقطع الفرعي. String
delim — المحرف الفاصل. String
count — عدد مرات ظهور الفاصل التي يجب احتسابها قبل استخراج المقطع الفرعي. إذا كانت قيمة count موجبة، فسيُعاد كل ما يقع إلى يسار الفاصل الأخير (مع العد من اليسار). وإذا كانت قيمة count سالبة، فسيُعاد كل ما يقع إلى يمين الفاصل الأخير (مع العد من اليمين). UInt أو Int
القيمة المعادة
يُعيد مقطعًا فرعيًا من s يسبق count من مرات ظهور delim. String
أمثلة
مثال على الاستخدام
SELECT substringIndex('www.clickhouse.com', '.', 2)
┌─substringIndex('www.clickhouse.com', '.', 2)─┐
│ www.clickhouse │
└──────────────────────────────────────────────┘
أُضيفت في: v23.7.0
تُرجع السلسلة الفرعية من s التي تسبق count من مرات ظهور الفاصل delim، وذلك على مستوى نقاط Unicode البرمجية.
تفترض أن السلسلة تحتوي على نص صالح مُرمَّز بترميز UTF-8.
إذا لم يتحقق هذا الافتراض، فلا يتم طرح أي استثناء وتكون النتيجة غير معرّفة.
الصيغة
substringIndexUTF8(s, delim, count)
الوسائط
s — السلسلة المطلوب استخراج السلسلة الفرعية منها. String
delim — الحرف الفاصل الذي سيتم التقسيم عنده. String
count — عدد مرات ظهور الفاصل التي يجب عدّها قبل استخراج السلسلة الفرعية. إذا كانت قيمة count موجبة، فسيتم إرجاع كل ما يقع إلى يسار الفاصل الأخير (مع العد من اليسار). وإذا كانت قيمة count سالبة، فسيتم إرجاع كل ما يقع إلى يمين الفاصل الأخير (مع العد من اليمين). UInt أو Int
القيمة المعادة
تعيد سلسلة فرعية من s تقع قبل count من مرات ظهور delim. String
أمثلة
مثال UTF8
SELECT substringIndexUTF8('www.straßen-in-europa.de', '.', 2)
أُضيفت في: v1.1.0
تعيد هذه الدالة سلسلة فرعية من السلسلة s تبدأ عند فهرس نقطة الترميز offset المحدد.
ويبدأ عدّ نقاط الترميز من 1 وفقًا للمنطق التالي:
- إذا كانت قيمة
offset هي 0، فستُعاد سلسلة فارغة.
- إذا كانت قيمة
offset سالبة، فتبدأ السلسلة الفرعية عند offset نقطة ترميز محسوبة من نهاية السلسلة بدلًا من بدايتها.
يحدِّد الوسيط الاختياري length الحد الأقصى لعدد نقاط الترميز التي يمكن أن تحتويه السلسلة الفرعية المُعادة.
تفترض هذه الدالة أن السلسلة تحتوي على نص بترميز UTF-8 صحيح.
وإذا لم يتحقق هذا الافتراض، فلا يُطرَح أي استثناء وتكون النتيجة غير معرّفة.
الصيغة
substringUTF8(s, offset[, length])
الوسائط
s — السلسلة التي يُستخرج منها سلسلة فرعية. String أو FixedString أو Enum
offset — موضع بداية السلسلة الفرعية في s. Int أو UInt
length — الحد الأقصى لطول السلسلة الفرعية. اختياري. Int أو UInt
القيمة المُعادة
تعيد سلسلة فرعية من s بطول length من نقاط الترميز، بدءًا من فهرس نقطة الترميز offset. String
أمثلة
مثال على الاستخدام
SELECT 'Täglich grüßt das Murmeltier.' AS str, substringUTF8(str, 9), substringUTF8(str, 9, 5)
Täglich grüßt das Murmeltier. grüßt das Murmeltier. grüßt
أُضيفت في: v20.1.0
يحوّل سلسلة نصية إلى ترميز UTF-8 صالح عبر استبدال أي محارف UTF-8 غير الصالحة بمحرف الاستبدال � (U+FFFD).
وعند العثور على عدة محارف غير صالحة متتالية، تُختزل إلى محرف استبدال واحد.
الصيغة
الوسائط
s — أي مجموعة من البايتات مُمثَّلة ككائن من نوع البيانات String. String
القيمة المُعادة
يعيد سلسلة نصية صالحة بترميز UTF-8. String
أمثلة
مثال على الاستخدام
SELECT toValidUTF8('\\x61\\xF0\\x80\\x80\\x80b')
c
┌─toValidUTF8('a����b')─┐
│ a�b │
└───────────────────────┘
أُضيف في: v20.1.0
يزيل الأحرف المحددة من بداية السلسلة النصية ونهايتها.
ويزيل افتراضيًا أحرف المسافات البيضاء (ASCII) الشائعة.
الصيغة
trimBoth(s[, trim_characters])
الأسماء البديلة: trim
الوسائط
s — السلسلة النصية المطلوب إزالة الأحرف منها. String
trim_characters — اختياري. الأحرف المطلوب إزالتها. إذا لم تُحدَّد، فستُزال أحرف المسافات البيضاء الشائعة. String
القيمة المعادة
تعيد السلسلة النصية بعد إزالة الأحرف المحددة من الطرفين. String
أمثلة
مثال على الاستخدام
SELECT trimBoth('$$ClickHouse$$', '$')
┌─trimBoth('$$⋯se$$', '$')─┐
│ ClickHouse │
└──────────────────────────┘
استُحدثت في: v20.1.0
تزيل الأحرف المحددة من بداية السلسلة.
وبشكل افتراضي، تزيل أحرف المسافات البيضاء الشائعة (ASCII).
الصياغة
trimLeft(input[, trim_characters])
الأسماء البديلة: ltrim
الوسائط
input — السلسلة النصية المطلوب اقتطاعها. String
trim_characters — اختياري. الأحرف المطلوب اقتطاعها. إذا لم يتم تحديدها، تُزال أحرف المسافات البيضاء الشائعة. String
القيمة المُعادة
تعيد السلسلة النصية بعد اقتطاع الأحرف المحددة من الجهة اليسرى. String
أمثلة
مثال على الاستخدام
SELECT trimLeft('ClickHouse', 'Click');
┌─trimLeft('Cl⋯', 'Click')─┐
│ House │
└──────────────────────────┘
أُضيف في: v20.1.0
يزيل الأحرف المحددة من نهاية سلسلة نصية.
وبشكل افتراضي، يزيل أحرف المسافات البيضاء (ASCII) الشائعة.
الصيغة
trimRight(s[, trim_characters])
الأسماء البديلة: rtrim
الوسائط
s — السلسلة المطلوب اقتطاع الأحرف منها. String
trim_characters — أحرف اختيارية لاقتطاعها. إذا لم يتم تحديدها، فستُزال أحرف المسافات البيضاء الشائعة. String
القيمة المُعادة
تعيد السلسلة بعد اقتطاع الأحرف المحددة من طرفها الأيمن. String
أمثلة
مثال على الاستخدام
SELECT trimRight('ClickHouse','House');
┌─trimRight('C⋯', 'House')─┐
│ Click │
└──────────────────────────┘
أُضيف في: v25.6.0
يقبل سلسلة نصية ويفك ترميزها باستخدام نظام الترميز Base32.
الصيغة
الوسائط
encoded — عمود String أو قيمة ثابتة لفك ترميزها. إذا لم تكن السلسلة مرمّزة بترميز Base32 بشكل صحيح، فستُرجع سلسلة فارغة عند حدوث خطأ. String
القيمة المعادة
ترجع سلسلة تحتوي على القيمة الناتجة بعد فك ترميز الوسيطة. String
أمثلة
مثال على الاستخدام
SELECT tryBase32Decode('IVXGG33EMVSA====');
┌─tryBase32Decode('IVXGG33EMVSA====')─┐
│ Encoded │
└─────────────────────────────────────┘
أُضيف في: v22.10.0
مثل base58Decode، لكنه يعيد سلسلة فارغة عند حدوث خطأ.
الصيغة
tryBase58Decode(encoded[, expected_size])
الوسائط
encoded — عمود String أو قيمة ثابتة. إذا لم تكن السلسلة مرمّزة بترميز Base58 صالح، فستُرجِع سلسلة فارغة عند حدوث خطأ. String
expected_size — اختياري. الحجم المتوقع بعد فك الترميز بالبايت. عندما تكون القيمة 32 أو 64، يُستخدم مفكِّك ترميز مُحسَّن؛ وبالنسبة إلى القيم الأخرى، يُستخدم مفكِّك الترميز العام. UInt8, UInt16, UInt32, or UInt64
القيمة المعادة
تُرجِع سلسلة تحتوي على القيمة الناتجة عن فك ترميز الوسيطة. String
أمثلة
مثال على الاستخدام
SELECT tryBase58Decode('3dc8KtHrwM') AS res, tryBase58Decode('invalid') AS res_invalid;
┌─res─────┬─res_invalid─┐
│ Encoded │ │
└─────────┴─────────────┘
أُضيف في: v18.16.0
مثل base64Decode، لكنه يعيد سلسلة فارغة عند حدوث خطأ.
البنية
الوسيطات
encoded — عمود String أو قيمة ثابتة لفك ترميزها. إذا لم تكن السلسلة مرمّزة بترميز Base64 صالح، فسيُرجِع سلسلة فارغة عند حدوث خطأ. String
القيمة المعادة
يُرجِع سلسلة تحتوي على القيمة الناتجة عن فك ترميز الوسيطة. String
أمثلة
مثال على الاستخدام
SELECT tryBase64Decode('Y2xpY2tob3VzZQ==')
┌─tryBase64Decode('Y2xpY2tob3VzZQ==')─┐
│ clickhouse │
└─────────────────────────────────────┘
أُضيف في الإصدار: v18.16.0
مثل base64URLDecode، لكنه يعيد سلسلة فارغة عند حدوث خطأ.
الصيغة
tryBase64URLDecode(encoded)
الوسائط
encoded — عمود من نوع String أو قيمة ثابتة لفك ترميزها. إذا لم تكن السلسلة مُرمَّزة بترميز Base64 صالح، فستُرجِع سلسلة فارغة عند حدوث خطأ. String
القيمة المُعادة
تُرجِع سلسلة تحتوي على القيمة الناتجة عن فك ترميز الوسيط. String
الأمثلة
مثال على الاستخدام
SELECT tryBase64URLDecode('aHR0cHM6Ly9jbGlja2hvdXNlLmNvbQ')
┌─tryBase64URLDecode('aHR0cHM6Ly9jbGlja2hvdXNlLmNvbQ')─┐
│ https://clickhouse.com │
└──────────────────────────────────────────────────────┘
أُضيف في: v24.1.0
يعيد تمثيل Unicode (UTF-8) لاسم النطاق وفق خوارزمية ToUnicode ووفقًا لآلية Internationalized Domain Names in Applications (IDNA).
في حال حدوث خطأ، يعيد سلسلة فارغة بدلًا من رفع استثناء.
الصيغة
الوسائط
القيمة المُعادة
تعيد تمثيل ASCII لسلسلة الإدخال وفق آلية IDNA لقيمة الإدخال، أو سلسلة فارغة إذا كانت قيمة الإدخال غير صالحة. String
أمثلة
مثال على الاستخدام
SELECT tryIdnaEncode('straße.münchen.de')
┌─tryIdnaEncode('straße.münchen.de')──┐
│ xn--strae-oqa.xn--mnchen-3ya.de │
└─────────────────────────────────────┘
أُضيف في: v24.1.0
يشبه punycodeDecode، لكنه يعيد سلسلة فارغة إذا لم يتم تمرير سلسلة صالحة مُرمَّزة بـ Punycode.
الصيغة
الوسائط
s — سلسلة مُرمَّزة باستخدام Punycode. String
القيمة المعادة
تعيد النص الصريح لقيمة الإدخال، أو سلسلة فارغة إذا كانت قيمة الإدخال غير صالحة. String
أمثلة
مثال على الاستخدام
SELECT tryPunycodeDecode('Mnchen-3ya')
┌─tryPunycodeDecode('Mnchen-3ya')─┐
│ München │
└─────────────────────────────────┘
أُضيفت في: v1.1.0
يحوّل أحرف ASCII اللاتينية في سلسلة نصية إلى أحرف كبيرة.
الصيغة
الأسماء البديلة: ucase
الوسائط
s — السلسلة المراد تحويلها إلى أحرف كبيرة. String
القيمة المُعادة
تعيد السلسلة s بعد تحويلها إلى أحرف كبيرة. String
أمثلة
مثال على الاستخدام
SELECT upper('clickhouse')
┌─upper('clickhouse')─┐
│ CLICKHOUSE │
└─────────────────────┘
قُدِّم في: v1.1.0
يحوّل سلسلة نصية إلى أحرف كبيرة، على افتراض أن السلسلة تحتوي على نص صالح مرمّز بترميز UTF-8.
إذا لم يتحقق هذا الافتراض، فلا يتم طرح أي استثناء وتكون النتيجة غير معرّفة.
لا تكتشف هذه الدالة اللغة. فعلى سبيل المثال، قد لا تكون النتيجة صحيحة تمامًا للغة التركية (i/İ مقابل i/I).
إذا كان طول تسلسل بايتات UTF-8 مختلفًا بين الأحرف الكبيرة والصغيرة لنقطة ترميز ما (مثل ẞ و ß)، فقد تكون النتيجة غير صحيحة لتلك النقطة.
الصيغة
الوسائط
القيمة المعادة
قيمة من نوع البيانات String
أمثلة
مثال على الاستخدام
SELECT upperUTF8('München') AS Upperutf8
┌─Upperutf8─┐
│ MÜNCHEN │
└───────────┘