الانتقال إلى المحتوى الرئيسي
تم إنشاء الوثائق أدناه من جدول النظام system.functions.

alphaTokens

أُضيف في: v1.1.0 يستخرج مقاطع فرعية من بايتات متتالية ضمن النطاقين a-z و A-Z، ويُرجع مصفوفة من المقاطع الفرعية المستخرجة. البنية
alphaTokens(s[, max_substrings])
الأسماء البديلة: splitByAlpha الوسائط
  • s — السلسلة النصية المراد تقسيمها. String
  • max_substrings — اختياري. عندما تكون max_substrings > 0، لن يتجاوز عدد السلاسل الفرعية المُعادة max_substrings، وإلا فستُعيد الدالة أكبر عدد ممكن من السلاسل الفرعية. Int64
القيمة المُعادة تعيد مصفوفة من السلاسل الفرعية الناتجة من s. Array(String) أمثلة مثال على الاستخدام
Query
SELECT alphaTokens('abca1abc');
Response
┌─alphaTokens('abca1abc')─┐
│ ['abca','abc']          │
└─────────────────────────┘

arrayStringConcat

أُضيف في: v1.1.0 يدمج التمثيلات النصية للقيم المدرجة في المصفوفة باستخدام الفاصل المُحدَّد، وهي معلمة اختيارية تُضبط افتراضيًا على سلسلة نصية فارغة. الصيغة
arrayStringConcat(arr[, separator])
الأسماء المستعارة: array_to_string الوسيطات
  • arr — المصفوفة المطلوب دمج عناصرها. Array(T)
  • separator — اختياري. سلسلة الفاصل. تكون سلسلة فارغة افتراضيًا. const String
القيمة المعادة تُرجع السلسلة الناتجة عن الدمج. String أمثلة مثال على الاستخدام
Query
SELECT arrayStringConcat(['12/05/2021', '12:50:00'], ' ') AS DateString;
Response
┌─DateString──────────┐
│ 12/05/2021 12:50:00 │
└─────────────────────┘

extractAllGroupsVertical

مُقدَّم في: v20.5.0 يطابق جميع مجموعات السلسلة باستخدام تعبير نمطي ويُرجع مصفوفة من المصفوفات، بحيث تتضمن كل مصفوفة الأجزاء المطابقة من كل مجموعة، مُجمَّعةً وفق ترتيب ظهورها في سلسلة الإدخال. الصياغة
extractAllGroupsVertical(s, regexp)
الأسماء البديلة: extractAllGroups الوسيطات القيمة المعادة يعيد مصفوفة من المصفوفات، بحيث تحتوي كل مصفوفة داخلية على المجموعات الملتقطة من مطابقة واحدة. وتنتج كل مطابقة مصفوفةً بعناصر تقابل المجموعات الملتقطة في التعبير النمطي (المجموعة 1، المجموعة 2، وهكذا). وإذا لم يتم العثور على أي مطابقات، فستُعاد مصفوفة فارغة. Array(Array(String)) أمثلة مثال على الاستخدام
Query
WITH '< Server: nginx
< Date: Tue, 22 Jan 2019 00:26:14 GMT
< Content-Type: text/html; charset=UTF-8
< Connection: keep-alive
' AS s
SELECT extractAllGroupsVertical(s, '< ([\\w\\-]+): ([^\\r\\n]+)');
Response
[['Server','nginx'],['Date','Tue, 22 Jan 2019 00:26:14 GMT'],['Content-Type','text/html; charset=UTF-8'],['Connection','keep-alive']]

ngrams

تم تقديمه في: v21.11.0 يقسم سلسلة UTF-8 إلى n-grams بطول N. الصياغة
ngrams(s, N)
الوسيطات القيمة المُعادة تعيد مصفوفة من n-grams. Array(String) أمثلة مثال على الاستخدام
Query
SELECT ngrams('ClickHouse', 3);
Response
['Cli','lic','ick','ckH','kHo','Hou','ous','use']

reverseBySeparator

أُضيفت في: v26.2.0 تعكس ترتيب السلاسل الفرعية في سلسلة نصية مفصولة بفاصل محدد. تقسم هذه الدالة السلسلة النصية باستخدام الفاصل، ثم تعكس ترتيب الأجزاء الناتجة، وتضمّها مجددًا باستخدام الفاصل نفسه. وهي مفيدة لتحليل أسماء النطاقات، ومسارات الملفات، أو أي بيانات هرمية أخرى تحتاج فيها إلى عكس ترتيب المكوّنات. أمثلة:
  • reverseBySeparator(‘www.google.com’) تعيد ‘com.google.www’
  • reverseBySeparator(‘a/b/c’, ’/’) تعيد ‘c/b/a’
  • reverseBySeparator(‘x::y::z’, ’::’) تعيد ‘z::y::x’
بناء الجملة
reverseBySeparator(string[, separator])
الوسيطات
  • string — سلسلة الإدخال المطلوب عكس ترتيب أجزائها. String
  • separator — سلسلة الفاصل المستخدمة لتحديد الأجزاء. إذا لم يتم توفيرها، فسيُستخدم ’.’ (نقطة). القيمة الافتراضية: ’.’ String
القيمة المُعادة تعيد سلسلة تكون فيها المقاطع الفرعية مرتبة من اليمين إلى اليسار مقارنةً بالسلسلة الأصلية، ومتصلة باستخدام الفاصل نفسه. String أمثلة عكس اسم النطاق الأساسي
Query
SELECT reverseBySeparator('www.google.com')
Response
'com.google.www'
عكس ترتيب المسار
Query
SELECT reverseBySeparator('a/b/c', '/')
Response
'c/b/a'
فاصل مخصص
Query
SELECT reverseBySeparator('x::y::z', '::')
Response
'z::y::x'
حالة خاصة عند استخدام النقاط
Query
SELECT reverseBySeparator('.a.b.', '.')
Response
'.b.a.'
عنصر واحد
Query
SELECT reverseBySeparator('single')
Response
'single'
فاصل فارغ
Query
SELECT reverseBySeparator('abcde', '')
Response
'edcba'

splitByChar

أُضيف في: v1.1.0 يُقسِّم سلسلة نصية باستخدام السلسلة الثابتة المحددة separator، والتي يجب أن تتكوّن من محرف واحد تمامًا، إلى مصفوفة من السلاسل الفرعية. قد تُحدَّد سلاسل فرعية فارغة إذا ظهر الفاصل في بداية السلسلة أو نهايتها، أو إذا وُجدت عدة فواصل متتالية.
يتحكّم الإعداد splitby_max_substrings_includes_remaining_string (القيمة الافتراضية: 0) في ما إذا كانت السلسلة المتبقية ستُضمَّن في العنصر الأخير من مصفوفة النتيجة عندما تكون الوسيطة max_substrings > 0.
قد تُحدَّد سلاسل فرعية فارغة في الحالات التالية:
  • ظهور فاصل في بداية السلسلة أو نهايتها
  • وجود عدة فواصل متتالية
  • إذا كانت السلسلة الأصلية s فارغة
الصياغة
splitByChar(separator, s[, max_substrings])
الوسيطات
  • separator — يجب أن يكون الفاصل حرفًا من بايت واحد. String
  • s — السلسلة المراد تقسيمها. String
  • max_substrings — اختياري. إذا كانت max_substrings > 0، فستتضمن المصفوفة المُعادة max_substrings من السلاسل الفرعية كحد أقصى، وإلا فستُرجع الدالة أكبر عدد ممكن من السلاسل الفرعية. القيمة الافتراضية هي 0. Int64
القيمة المعادة تُرجع مصفوفة من السلاسل الفرعية المحددة. Array(String) أمثلة مثال على الاستخدام
Query
SELECT splitByChar(',', '1,2,3,abcde');
Response
┌─splitByChar(⋯2,3,abcde')─┐
│ ['1','2','3','abcde']    │
└──────────────────────────┘

splitByNonAlpha

أُضيف في: v21.9.0 يقسم السلسلة النصية، المفصولة بمحارف المسافات البيضاء وعلامات الترقيم، إلى مصفوفة من السلاسل الفرعية.
يحدد الإعداد splitby_max_substrings_includes_remaining_string (القيمة الافتراضية: 0) ما إذا كان سيتم تضمين السلسلة المتبقية في العنصر الأخير من مصفوفة النتائج عندما تكون الوسيطة max_substrings > 0.
البنية
splitByNonAlpha(s[, max_substrings])
المعاملات
  • s — السلسلة النصية المراد تقسيمها. String
  • max_substrings — اختياري. عندما تكون قيمة max_substrings > 0، لن يتجاوز عدد السلاسل الفرعية المُعادة max_substrings، وإلا فستُرجِع الدالة أكبر عدد ممكن من السلاسل الفرعية. القيمة الافتراضية: 0. Int64
القيمة المُعادة تُرجِع مصفوفة من السلاسل الفرعية المحددة لـ s. Array(String) أمثلة مثال على الاستخدام
Query
SELECT splitByNonAlpha('user@domain.com');
Response
['user','domain','com']

splitByRegexp

أُضيف في: v21.6.0 يقسّم سلسلة مفصولة بالتعبير النمطي المُعطى إلى مصفوفة من السلاسل الفرعية. إذا كان التعبير النمطي المُعطى فارغًا، فسيقسّم السلسلة إلى مصفوفة من المحارف المفردة. إذا لم يتم العثور على أي تطابق للتعبير النمطي، فلن يتم تقسيم السلسلة. قد تظهر سلاسل فرعية فارغة في الحالات التالية:
  • إذا وقع تطابق غير فارغ للتعبير النمطي في بداية السلسلة أو نهايتها
  • إذا وُجدت عدة تطابقات غير فارغة ومتتالية للتعبير النمطي
  • إذا كانت السلسلة الأصلية فارغة بينما التعبير النمطي غير فارغ.
يحدّد الإعداد splitby_max_substrings_includes_remaining_string (الافتراضي: 0) ما إذا كانت السلسلة المتبقية ستُدرج في العنصر الأخير من المصفوفة الناتجة عندما تكون قيمة max_substrings > 0.
البنية
splitByRegexp(regexp, s[, max_substrings])
المعاملات
  • regexp — تعبير نمطي. ثابت. String أو FixedString
  • s — السلسلة المراد تقسيمها. String
  • max_substrings — اختياري. عندما تكون max_substrings > 0، لن يتجاوز عدد السلاسل الفرعية المُعادة القيمة max_substrings، وإلا فستُرجع الدالة أكبر عدد ممكن من السلاسل الفرعية. القيمة الافتراضية: 0. Int64
القيمة المُعادة تُرجع مصفوفة من السلاسل الفرعية المحددة من s. Array(String) أمثلة مثال على الاستخدام
Query
SELECT splitByRegexp('\\d+', 'a12bc23de345f');
Response
┌─splitByRegex⋯c23de345f')─┐
│ ['a12bc23de345f']        │
└──────────────────────────┘
تعبير نمطي فارغ
Query
SELECT splitByRegexp('', 'abcde');
Response
┌─splitByRegexp('', 'abcde')─┐
│ ['a','b','c','d','e']      │
└────────────────────────────┘

splitByString

أُضيف في: v1.1.0 يقسّم سلسلة نصية باستخدام separator ثابت يتكوّن من عدة أحرف إلى مصفوفة من السلاسل الفرعية. إذا كانت السلسلة النصية separator فارغة، فسيُقسَّم النص s إلى مصفوفة من الأحرف المفردة. قد تظهر سلاسل فرعية فارغة في الحالات التالية:
  • إذا ظهر فاصل غير فارغ في بداية السلسلة النصية أو نهايتها
  • إذا وُجدت عدة فواصل غير فارغة متتالية
  • إذا كانت السلسلة النصية الأصلية s فارغة وكان الفاصل غير فارغ
يتحكّم الإعداد splitby_max_substrings_includes_remaining_string (الافتراضي: 0) في ما إذا كانت السلسلة النصية المتبقية ستُدرج في العنصر الأخير من مصفوفة النتيجة عندما تكون الوسيطة max_substrings > 0.
البنية
splitByString(separator, s[, max_substrings])
الوسائط
  • separator — الفاصل. String
  • s — السلسلة النصية المراد تقسيمها. String
  • max_substrings — اختياري. عندما تكون max_substrings > 0، لن يزيد عدد السلاسل الفرعية المُعادة عن max_substrings، وإلا فستُعيد الدالة أكبر عدد ممكن من السلاسل الفرعية. القيمة الافتراضية: 0. Int64
القيمة المُعادة تُعيد مصفوفة من السلاسل الفرعية الناتجة من s Array(String) أمثلة مثال على الاستخدام
Query
SELECT splitByString(', ', '1, 2 3, 4,5, abcde');
Response
┌─splitByStrin⋯4,5, abcde')─┐
│ ['1','2 3','4,5','abcde'] │
└───────────────────────────┘
فاصل فارغ
Query
SELECT splitByString('', 'abcde');
Response
┌─splitByString('', 'abcde')─┐
│ ['a','b','c','d','e']      │
└────────────────────────────┘

splitByWhitespace

أُضيفت في: v21.9.0 تقسم سلسلة نصية مفصولة بمحارف المسافات البيضاء إلى مصفوفة من السلاسل الفرعية.
يتحكم الإعداد splitby_max_substrings_includes_remaining_string (الافتراضي: 0) في ما إذا كان الجزء المتبقي من السلسلة النصية يُدرج في العنصر الأخير من مصفوفة النتيجة عندما تكون الوسيطة max_substrings > 0.
الصياغة
splitByWhitespace(s[, max_substrings])
الوسيطات
  • s — السلسلة المطلوب تقسيمها. String
  • max_substrings — اختياري. عندما تكون قيمة max_substrings > 0، لن يتجاوز عدد السلاسل الفرعية المُعادة max_substrings، وإلا فستُعيد الدالة أكبر عدد ممكن من السلاسل الفرعية. القيمة الافتراضية: 0. Int64
القيمة المعادة تعيد مصفوفة من السلاسل الفرعية المختارة من s. Array(String) أمثلة مثال على الاستخدام
Query
SELECT splitByWhitespace('  1!  a,  b.  ');
Response
['1!','a,','b.']

tokens

تم تقديمه في: v21.11.0 يقسّم سلسلة نصية إلى رموز باستخدام مُقسِّم الرموز المحدد. مُقسِّمات الرموز المتاحة:
  • splitByNonAlpha يقسّم السلاسل النصية عند محارف ASCII غير الأبجدية الرقمية (راجع أيضًا الدالة splitByNonAlpha).
  • splitByString(S) يقسّم السلاسل النصية باستخدام سلاسل الفواصل S التي يحدّدها المستخدم (راجع أيضًا الدالة splitByString). يمكن تحديد الفواصل باستخدام معلمة اختيارية، على سبيل المثال: tokens(value, 'splitByString', [', ', '; ', '\n', '\\']). لاحظ أن كل سلسلة يمكن أن تتكوّن من عدة محارف (', ' في المثال). قائمة الفواصل الافتراضية، إذا لم تُحدَّد صراحةً، هي مسافة بيضاء واحدة [' '].
  • asciiCJK يقسّم السلاسل النصية إلى رموز باستخدام قواعد حدود الكلمات في Unicode (على غرار UAX #29). وتُشكّل محارف ASCII الأبجدية الرقمية والشرطات السفلية رموزًا مع الموصلات (: للحروف، و. و' للمحارف من النوع نفسه). أما محارف Unicode غير التابعة لـ ASCII فتتحول إلى رموز من محرف واحد.
  • ngrams(N) يقسّم السلاسل النصية إلى n-grams متساوية الحجم (راجع أيضًا الدالة ngrams). يمكن تحديد طول ngram باستخدام معلمة عددية صحيحة اختيارية بين 1 و8، على سبيل المثال: tokens(value, 'ngrams', 3). حجم ngram الافتراضي، إذا لم يُحدَّد صراحةً، هو 3.
  • sparseGrams(min_length, max_length, min_cutoff_length) يقسّم السلاسل النصية إلى n-grams متغيرة الطول لا يقل طولها عن min_length ولا يزيد عن max_length (شاملًا) من المحارف (راجع أيضًا الدالة sparseGrams). ما لم يُحدَّد ذلك صراحةً، تكون القيمتان الافتراضيتان لـ min_length وmax_length هما 3 و100. وإذا تم تمرير المعلمة min_cutoff_length، فستُعاد فقط n-grams التي يكون طولها أكبر من أو مساويًا لـ min_cutoff_length. وبالمقارنة مع ngrams(N)، ينتج مُقسِّم الرموز sparseGrams N-grams متغيرة الطول، مما يتيح تمثيلًا أكثر مرونة للنص الأصلي. على سبيل المثال، tokens(value, 'sparseGrams', 3, 5, 4) يُنشئ داخليًا 3- و4- و5-grams من سلسلة الإدخال، ولكن لا تُعاد إلا 4- و5-grams.
  • array لا يُجري أي تقسيم إلى رموز، أي إن قيمة كل row تُعد رمزًا (راجع أيضًا الدالة array).
في حالة مُقسِّم الرموز splitByString، إذا كانت الرموز لا تشكّل prefix code، فغالبًا ما ستحتاج إلى أن تُفضِّل المطابقة الفواصل الأطول أولًا. وللقيام بذلك، مرّر الفواصل بترتيب تنازلي حسب الطول. على سبيل المثال، مع separators = ['%21', '%'] فإن السلسلة %21abc ستُقسَّم إلى رموز على النحو ['abc']، بينما separators = ['%', '%21'] ستُقسَّم إلى ['21ac'] (وهو على الأرجح ليس ما أردته). الصياغة
tokens(value) -- 'splitByNonAlpha' tokenizer
tokens(value, 'splitByNonAlpha')
tokens(value, 'splitByString'[, separators])
tokens(value, 'asciiCJK')
tokens(value, 'ngrams'[, n])
tokens(value, 'sparseGrams'[, min_length, max_length[, min_cutoff_length]])
tokens(value, 'array')
المعاملات
  • value — سلسلة الإدخال. String أو FixedString
  • tokenizer — المُقسِّم النصي المراد استخدامه. الوسيطات الصالحة هي splitByNonAlpha وsplitByString وasciiCJK وngrams وsparseGrams وarray. هذا الوسيط اختياري، وإذا لم يُحدَّد صراحةً، فالقيمة الافتراضية هي splitByNonAlpha. const String
  • n — ينطبق فقط إذا كانت الوسيطة tokenizer هي ngrams: معلمة اختيارية تحدد طول الـ ngrams. إذا لم تُحدَّد صراحةً، فالقيمة الافتراضية هي 3. const UInt8
  • separators — ينطبق فقط إذا كانت الوسيطة tokenizer هي split: معلمة اختيارية تحدد سلاسل الفواصل. إذا لم تُحدَّد صراحةً، فالقيمة الافتراضية هي [' ']. const Array(String)
  • min_length — ينطبق فقط إذا كانت الوسيطة tokenizer هي sparseGrams: معلمة اختيارية تحدد الحد الأدنى لطول الـ gram، والقيمة الافتراضية هي 3. const UInt8
  • max_length — ينطبق فقط إذا كانت الوسيطة tokenizer هي sparseGrams: معلمة اختيارية تحدد الحد الأقصى لطول الـ gram، والقيمة الافتراضية هي 100. const UInt8
  • min_cutoff_length — ينطبق فقط إذا كانت الوسيطة tokenizer هي sparseGrams: معلمة اختيارية تحدد الحد الأدنى لطول القطع. const UInt8
القيمة المعادة تعيد مصفوفة الوحدات الرمزية الناتجة من سلسلة الإدخال. Array أمثلة المُقسِّم النصي الافتراضي
Query
SELECT tokens('test1,;\\\\ test2,;\\\\ test3,;\\\\   test4') AS tokens;
Response
['test1','test2','test3','test4']
مُجزِّئ Ngram
Query
SELECT tokens('abc def', 'ngrams', 3) AS tokens;
Response
['abc','bc ','c d',' de','def']

tokensForLikePattern

أُضيف في: v26.3.0 تُقسِّم هذه الدالة سلسلة نمط LIKE إلى tokens باستخدام الـ tokenizer المحدد. وعلى عكس الدالة tokens، فإن هذه الدالة تراعي دلالات نمط LIKE (مثل محارف البدل في البداية والنهاية)، وتطبّق قواعد خاصة بكل tokenizer لاستخراج tokens ذات معنى لأغراض Pattern matching. وهي تدعم مجموعات الوسائط نفسها التي تدعمها الدالة tokens؛ أما الوسائط الإضافية بعد tokenizer فتُفسَّر وفقًا للـ tokenizer المحدد (على سبيل المثال، n من أجل ngrams، وseparators من أجل splitByString، وmin_length / max_length [/ min_cutoff_length] من أجل sparseGrams). هذه الدالة مخصّصة أساسًا لأغراض تصحيح الأخطاء والاختبار، وتُستخدم داخليًا لتحليل سلوك tokenization لأنماط LIKE. الصياغة
tokensForLikePattern(value[, tokenizer[, tokenizer_specific_arguments...]])
الوسيطات
  • value — سلسلة الإدخال. String أو FixedString
  • tokenizer — مقسِّم النص إلى رموز المراد استخدامه. الوسيطات الصالحة هي splitByNonAlpha وsplitByString وasciiCJK وngrams وsparseGrams وarray. هذا الوسيط اختياري، وإذا لم يُحدَّد صراحةً، فستكون القيمة الافتراضية splitByNonAlpha. const String
  • n — يكون ذا صلة فقط إذا كانت الوسيطة tokenizer هي ngrams: معلمة اختيارية تحدد طول ngrams. إذا لم تُحدَّد صراحةً، فستكون القيمة الافتراضية 3. const UInt8
  • separators — يكون ذا صلة فقط إذا كانت الوسيطة tokenizer هي split: معلمة اختيارية تحدد سلاسل الفصل. إذا لم تُحدَّد صراحةً، فستكون القيمة الافتراضية [' ']. const Array(String)
  • min_length — يكون ذا صلة فقط إذا كانت الوسيطة tokenizer هي sparseGrams: معلمة اختيارية تحدد الحد الأدنى لطول gram، والقيمة الافتراضية هي 3. const UInt8
  • max_length — يكون ذا صلة فقط إذا كانت الوسيطة tokenizer هي sparseGrams: معلمة اختيارية تحدد الحد الأقصى لطول gram، والقيمة الافتراضية هي 100. const UInt8
  • min_cutoff_length — يكون ذا صلة فقط إذا كانت الوسيطة tokenizer هي sparseGrams: معلمة اختيارية تحدد الحد الأدنى لطول القطع. const UInt8
القيمة المعادة يعيد مصفوفة الرموز الناتجة من سلسلة الإدخال. Array أمثلة مقسِّم الرموز الافتراضي
Query
SELECT tokensForLikePattern('%test1,test2,test3%') AS tokens;
Response
['test2']
آخر تعديل في ٢٥ يونيو ٢٠٢٦