الانتقال إلى المحتوى الرئيسي
تُجري جميع الدوال في هذا القسم البحث بشكل حساس لحالة الأحرف افتراضيًا. وعادةً ما تتوفر صيغ دوال منفصلة للبحث غير الحساس لحالة الأحرف.
يتبع البحث غير الحساس لحالة الأحرف قواعد التحويل بين الأحرف الصغيرة والكبيرة في اللغة الإنجليزية. فعلى سبيل المثال، يكون الحرف الكبير لـ i في اللغة الإنجليزية هو I، بينما يكون في اللغة التركية İ - لذا قد تكون النتائج غير متوقعة في اللغات غير الإنجليزية.
تفترض الدوال في هذا القسم أيضًا أن السلسلة التي يُبحث فيها (ويُشار إليها في هذا القسم باسم haystack) وسلسلة البحث (ويُشار إليها في هذا القسم باسم needle) نصّان مرمَّزان بترميز أحادي البايت. وإذا لم يتحقق هذا الافتراض، فلا يُطرَح أي استثناء وتكون النتائج غير معرّفة. وعادةً ما تتوفر صيغ دوال منفصلة للبحث في السلاسل المرمَّزة بـ UTF-8. وبالمثل، إذا استُخدمت صيغة دالة لـ UTF-8 وكانت سلاسل الإدخال ليست نصًا مرمَّزًا بـ UTF-8، فلا يُطرَح أي استثناء وتكون النتائج غير معرّفة. لاحظ أيضًا أنه لا يُجرى أي تطبيع تلقائي لـ Unicode، ولكن يمكنك استخدام دوال normalizeUTF8*() لهذا الغرض. يُشرح كلٌّ من الدوال العامة للسلاسل ودوال الاستبدال في السلاسل بشكل منفصل.
التوثيق أدناه مُولَّد من جدول النظام system.functions.

countMatches

أُضيف في: v21.1.0 يعيد عدد مرات تطابق تعبير نمطي داخل سلسلة نصية.
سلوك يعتمد على الإصداريعتمد سلوك هذه الدالة على إصدار ClickHouse:
  • في الإصدارات < v25.6، تتوقف الدالة عن العد عند أول تطابق فارغ حتى إذا كان النمط يسمح بذلك.
  • في الإصدارات >= 25.6، تواصل الدالة التنفيذ عند حدوث تطابق فارغ. ويمكن استعادة السلوك القديم باستخدام الإعداد count_matches_stop_at_empty_match = true;
البنية
countMatches(haystack, pattern)
الوسيطات
  • haystack — السلسلة النصية المطلوب البحث فيها. String
  • pattern — نمط التعبير النمطي. String
القيمة المعادة يعيد عدد المطابقات التي عُثر عليها. UInt64 أمثلة عدّ تسلسلات الأرقام
Query
SELECT countMatches('hello 123 world 456 test', '[0-9]+')
Response
┌─countMatches('hello 123 world 456 test', '[0-9]+')─┐
│                                                   2 │
└─────────────────────────────────────────────────────┘

countMatchesCaseInsensitive

استُحدث في: v21.1.0 مشابه لـ countMatches، لكنه يُجري مطابقة تتجاهل حالة الأحرف. البنية
countMatchesCaseInsensitive(haystack, pattern)
الوسيطات
  • haystack — السلسلة النصية المراد البحث فيها. String
  • pattern — نمط تعبير نمطي. const String
القيمة المعادة يعيد عدد المطابقات التي تم العثور عليها. UInt64 أمثلة العدّ دون تمييز بين الأحرف الكبيرة والصغيرة
Query
SELECT countMatchesCaseInsensitive('Hello HELLO world', 'hello')
Response
┌─countMatchesCaseInsensitive('Hello HELLO world', 'hello')─┐
│                                                         2 │
└───────────────────────────────────────────────────────────┘

countSubstrings

أُضيف في: v21.1.0 يُرجع عدد مرات ظهور السلسلة الفرعية needle ضمن السلسلة haystack. البنية
countSubstrings(haystack, needle[, start_pos])
المعاملات
  • haystack — السلسلة التي يُجرى البحث فيها. String أو Enum. - needle — السلسلة الفرعية المطلوب البحث عنها. String. - start_pos — الموضع (بدءًا من 1) في haystack الذي يبدأ منه البحث. UInt. اختياري.
القيمة المُعادة عدد مرات الظهور. UInt64 أمثلة مثال على الاستخدام
Query
SELECT countSubstrings('aaaa', 'aa');
Response
┌─countSubstrings('aaaa', 'aa')─┐
│                             2 │
└───────────────────────────────┘
باستخدام الوسيط start_pos
Query
SELECT countSubstrings('abc___abc', 'abc', 4);
Response
┌─countSubstrings('abc___abc', 'abc', 4)─┐
│                                      1 │
└────────────────────────────────────────┘

countSubstringsCaseInsensitive

قُدِّمت في: v21.1.0 مثل countSubstrings، لكنه يحسب بغض النظر عن حالة الأحرف. الصياغة
countSubstringsCaseInsensitive(haystack, needle[, start_pos])
الوسائط
  • haystack — السلسلة التي يُجرى فيها البحث. String أو Enum
  • needle — السلسلة الفرعية المطلوب البحث عنها. String
  • start_pos — اختياري. الموضع (بدءًا من 1) في haystack الذي يبدأ منه البحث. UInt*
القيمة المُعادة يُرجع عدد مرات ظهور needle في haystack. UInt64 أمثلة مثال على الاستخدام
Query
SELECT countSubstringsCaseInsensitive('AAAA', 'aa');
Response
┌─countSubstri⋯AAA', 'aa')─┐
│                        2 │
└──────────────────────────┘
باستخدام الوسيطة start_pos
Query
SELECT countSubstringsCaseInsensitive('abc___ABC___abc', 'abc', 4);
Response
┌─countSubstri⋯, 'abc', 4)─┐
│                        2 │
└──────────────────────────┘

countSubstringsCaseInsensitiveUTF8

أُضيفت في: v21.1.0 مشابهة لـ countSubstrings، لكنها تحسب بدون حساسية لحالة الأحرف، وتفترض أن haystack عبارة عن سلسلة UTF-8. الصيغة
countSubstringsCaseInsensitiveUTF8(haystack, needle[, start_pos])
المعاملات
  • haystack — سلسلة UTF-8 يُجرى البحث فيها. String أو Enum
  • needle — سلسلة فرعية يُبحث عنها. String
  • start_pos — اختياري. الموضع (ابتداءً من 1) في haystack الذي يبدأ منه البحث. UInt*
القيمة المُعادة يعيد عدد مرات ظهور needle في haystack. UInt64 أمثلة مثال على الاستخدام
Query
SELECT countSubstringsCaseInsensitiveUTF8('ложка, кошка, картошка', 'КА');
Response
┌─countSubstri⋯шка', 'КА')─┐
│                        4 │
└──────────────────────────┘
مع الوسيطة start_pos
Query
SELECT countSubstringsCaseInsensitiveUTF8('ложка, кошка, картошка', 'КА', 13);
Response
┌─countSubstri⋯, 'КА', 13)─┐
│                        2 │
└──────────────────────────┘

extract

متوفر منذ: v1.1.0 يستخرج أول تطابق لتعبير نمطي في سلسلة نصية. إذا لم يطابق ‘haystack’ ‏‘pattern’، فستُعاد سلسلة فارغة. تستخدم هذه الدالة مكتبة RE2 للتعبيرات النمطية. يُرجى الرجوع إلى re2 للاطلاع على البنية المدعومة. إذا كان التعبير النمطي يحتوي على مجموعات ملتقطة (أنماطًا فرعية)، فستطابق الدالة سلسلة الإدخال مع أول مجموعة ملتقطة. البنية
extract(haystack, pattern)
الوسيطات
  • haystack — السلسلة المراد الاستخراج منها. String
  • pattern — تعبير نمطي، يحتوي عادةً على مجموعة التقاط. const String
القيمة المعادة يعيد الجزء المستخرج على هيئة سلسلة. String أمثلة استخراج النطاق من البريد الإلكتروني
Query
SELECT extract('test@clickhouse.com', '.*@(.*)$')
Response
┌─extract('test@clickhouse.com', '.*@(.*)$')─┐
│ clickhouse.com                            │
└───────────────────────────────────────────┘
إذا لم توجد مطابقة، تُعاد سلسلة فارغة
Query
SELECT extract('test@clickhouse.com', 'no_match')
Response
┌─extract('test@clickhouse.com', 'no_match')─┐
│                                            │
└────────────────────────────────────────────┘

extractAll

أُضيفت في: v1.1.0 مثل extract، لكنها تُرجِع مصفوفة تضم جميع مطابقات التعبير النمطي في سلسلة نصية. إذا لم يطابق ‘haystack’ التعبير النمطي ‘pattern’، فستُرجَع مصفوفة فارغة. إذا كان التعبير النمطي يحتوي على مجموعات ملتقطة (أنماط فرعية)، فستُطابِق الدالة سلسلة الإدخال مع أول مجموعة ملتقطة. البنية
extractAll(haystack, pattern)
الوسيطات
  • haystack — السلسلة التي تُستخرج منها المقاطع. String
  • pattern — تعبير نمطي، وقد يتضمن اختياريًا مجموعات التقاط. const String
القيمة المعادة يعيد مصفوفة من المقاطع المستخرجة. Array(String) أمثلة استخراج جميع الأرقام
Query
SELECT extractAll('hello 123 world 456', '[0-9]+')
Response
┌─extractAll('hello 123 world 456', '[0-9]+')─┐
│ ['123','456']                               │
└─────────────────────────────────────────────┘
الاستخراج باستخدام مجموعة الالتقاط
Query
SELECT extractAll('test@example.com, user@domain.org', '([a-zA-Z0-9]+)@')
Response
┌─extractAll('test@example.com, user@domain.org', '([a-zA-Z0-9]+)@')─┐
│ ['test','user']                                                    │
└────────────────────────────────────────────────────────────────────┘

extractAllGroupsHorizontal

أُضيفت في: v20.5.0 تطابق جميع مجموعات السلسلة النصية باستخدام التعبير النمطي الموفَّر، وتُرجع مصفوفة من المصفوفات، بحيث تحتوي كل مصفوفة على جميع القيم الملتقطة من المجموعة الملتقِطة نفسها، مرتبة حسب رقم المجموعة. البنية
extractAllGroupsHorizontal(s, regexp)
الوسيطات القيمة المعادة تعيد مصفوفة من المصفوفات، حيث تحتوي كل مصفوفة داخلية على جميع القيم الملتقطة من مجموعة ملتقطة واحدة عبر كل المطابقات. تحتوي المصفوفة الداخلية الأولى على جميع القيم الملتقطة من المجموعة 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 extractAllGroupsHorizontal(s, '< ([\\w\\-]+): ([^\\r\\n]+)');
Response
[['Server','Date','Content-Type','Connection'],['nginx','Tue, 22 Jan 2019 00:26:14 GMT','text/html; charset=UTF-8','keep-alive']]

extractGroups

أُضيفت في: v20.5.0 يستخرج مجموعات الالتقاط من أول سلسلة فرعية يطابقها تعبير نمطي. ولاستخراج المجموعات من جميع المطابقات، استخدم extractAllGroupsHorizontal أو extractAllGroupsVertical. الصيغة
extractGroups(s, regexp)
المعاملات
  • s — سلسلة الإدخال المطلوب الاستخراج منها. String أو FixedString
  • regexp — تعبير نمطي. يجب أن يحتوي على مجموعة ملتقطة واحدة على الأقل. ثابت. const String أو const FixedString
القيمة المُعادة إذا وُجد تطابق مع التعبير النمطي، فستُعاد مصفوفة تحتوي على المجموعات الملتقطة (1 إلى N، حيث إن N هو عدد المجموعات الملتقطة في regexp) لأول تطابق. وإذا لم يوجد تطابق، فستُعاد مصفوفة فارغة. 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 extractGroups(s, '< ([\\w\\-]+): ([^\\r\\n]+)');
Response
['Server','nginx']

hasAllTokens

أُضيف في: v25.10.0 مثل hasAnyTokens، لكنه يعيد 1 إذا كانت جميع الرموز في السلسلة أو المصفوفة needle تطابق السلسلة input، ويعيد 0 خلاف ذلك. وإذا كانت input عمودًا، فإنه يعيد جميع الصفوف التي تستوفي هذا الشرط.
يجب أن يكون للعمود input فهرس نصي معرّف لضمان أفضل أداء. إذا لم يكن هناك فهرس نصي معرّف، فستُجري الدالة مسحًا كاملًا للعمود دون استخدام فهرس، وهو أبطأ بكثير من البحث باستخدام فهرس.
قبل البحث، تُجزِّئ الدالة إلى رموز:
  • الوسيط input (دائمًا)، و
  • الوسيط needle (إذا أُعطي على هيئة String) باستخدام مُجزِّئ الرموز المحدد للفهرس النصي. إذا لم يكن للعمود فهرس نصي معرّف، فسيُستخدم بدلًا منه مُجزِّئ الرموز splitByNonAlpha. إذا كان الوسيط needle من النوع Array(String)، فسيُعامل كل عنصر في المصفوفة على أنه رمز — ولا تُجرى أي عملية إضافية لتجزئته إلى رموز.
تُتجاهل الرموز المكررة. على سبيل المثال، تُعامل needles = [‘ClickHouse’, ‘ClickHouse’] بالطريقة نفسها مثل [‘ClickHouse’].
عندما يعرّف الفهرس النصي معالجًا مسبقًا (على سبيل المثال lowerUTF8)، فإن hasAllTokens يطبّقه على input، وعندما تكون needles من نوع String، يطبّقه أيضًا على needles قبل تجزئتها إلى رموز. وعندما تكون needles من نوع Array(String)، فتمرَّر عناصرها كما هي ولا يُطبَّق عليها المعالج المسبق. لا يُطبَّق المعالج المسبق إلا على مسار الفهرس النصي، لذلك قد تختلف النتائج بين الاستعلامات التي تستخدم الفهرس النصي والاستعلامات التي لا تستخدمه (مثل SETTINGS use_skip_indexes = 0). يُتسامح مع هذا التباين لتحسين سهولة استخدام البحث بالنص الكامل.
البنية
hasAllTokens(input, needles)
الأسماء البديلة: hasAllToken الوسيطات
  • input — عمود الإدخال. String أو FixedString أو Array(String) أو Array(FixedString)
  • needles — الرموز المراد البحث عنها. String أو Array(String)
  • tokenizer — مُجزِّئ الرموز المميزّة المراد استخدامه. الوسيطات الصالحة هي splitByNonAlpha وsplitByString وasciiCJK وngrams وsparseGrams وarray. وهو اختياري، وإذا لم يُحدَّد صراحةً، فستكون القيمة الافتراضية splitByNonAlpha. const String
القيمة المُعادة تُعيد 1 إذا تطابقت جميع الرموز المراد البحث عنها، وإلا فتُعيد 0. UInt8 أمثلة استخدام أساسي مع سلسلة بحث من نوع String
Query
CREATE TABLE table (
    id UInt32,
    msg String,
    INDEX idx(msg) TYPE text(tokenizer = splitByString(['()', '\\']))
)
ENGINE = MergeTree
ORDER BY id;

INSERT INTO table VALUES (1, '()a,\\bc()d'), (2, '()\\a()bc\\d'), (3, ',()a\\,bc,(),d,');

SELECT count() FROM table WHERE hasAllTokens(msg, 'a\\d()');
Response
┌─count()─┐
│       1 │
└─────────┘
حدِّد أنماط البحث المطلوب العثور عليها كما هي (من دون تجزئة إلى وحدات) في مصفوفة
Query
SELECT count() FROM table WHERE hasAllTokens(msg, ['a', 'd']);
Response
┌─count()─┐
│       1 │
└─────────┘
أنشئ سلاسل البحث باستخدام الدالة tokens
Query
SELECT count() FROM table WHERE hasAllTokens(msg, tokens('a()d', 'splitByString', ['()', '\\']));
Response
┌─count()─┐
│       1 │
└─────────┘
استخدم مُجزِّئًا مخصصًا عبر المُعامِل الثالث
Query
SELECT hasAllTokens('abcdef', 'abc', 'ngrams(3)');
Response
┌─hasAllTokens('abcdef', 'abc', 'ngrams(3)')─┐
│                                            1 │
└──────────────────────────────────────────────┘
أمثلة على استخدام أعمدة Array وMap
Query
CREATE TABLE log (
    id UInt32,
    tags Array(String),
    attributes Map(String, String),
    INDEX idx_tags (tags) TYPE text(tokenizer = splitByNonAlpha),
    INDEX idx_attributes_keys mapKeys(attributes) TYPE text(tokenizer = array),
    INDEX idx_attributes_vals mapValues(attributes) TYPE text(tokenizer = array)
)
ENGINE = MergeTree
ORDER BY id;

INSERT INTO log VALUES
    (1, ['clickhouse', 'clickhouse cloud'], {'address': '192.0.0.1', 'log_level': 'INFO'}),
    (2, ['chdb'], {'embedded': 'true', 'log_level': 'DEBUG'});
Response
مثال على عمود من نوع المصفوفة
Query
SELECT count() FROM log WHERE hasAllTokens(tags, 'clickhouse');
Response
┌─count()─┐
│       1 │
└─────────┘
مثال على mapKeys
Query
SELECT count() FROM log WHERE hasAllTokens(mapKeys(attributes), ['address', 'log_level']);
Response
┌─count()─┐
│       1 │
└─────────┘
مثال على mapValues
Query
SELECT count() FROM log WHERE hasAllTokens(mapValues(attributes), ['192.0.0.1', 'DEBUG']);
Response
┌─count()─┐
│       0 │
└─────────┘

hasAnyTokens

أُضيف في: v25.10.0 يعيد 1 إذا طابق رمز واحد على الأقل في السلسلة أو المصفوفة needle السلسلة input، ويعيد 0 خلاف ذلك. وإذا كانت input عمودًا، فإنه يعيد جميع الصفوف التي تستوفي هذا الشرط.
يجب تعريف فهرس نصي على العمود input لتحقيق أفضل أداء. وإذا لم يكن هناك فهرس نصي معرّف، فستُجري الدالة فحصًا كاملًا للعمود بالقوة الغاشمة، وهو أبطأ بعدة مراتب من البحث باستخدام فهرس.
قبل البحث، تُجزِّئ الدالة إلى رموز:
  • الوسيط input (دائمًا)، و
  • الوسيط needle (إذا أُعطي على هيئة String) باستخدام مُقسِّم الرموز المحدد للفهرس النصي. وإذا لم يكن للعمود فهرس نصي معرّف، فسيُستخدم بدلًا من ذلك مُقسِّم الرموز splitByNonAlpha. وإذا كان الوسيط needle من النوع Array(String)، فسيُعامل كل عنصر في المصفوفة على أنه رمز — ولا يحدث أي تجزئة إضافية إلى رموز.
تُتجاهل الرموز المكررة. فعلى سبيل المثال، [‘ClickHouse’, ‘ClickHouse’] تُعامل بالطريقة نفسها مثل [‘ClickHouse’].
عندما يعرّف الفهرس النصي معالجًا مسبقًا (على سبيل المثال lowerUTF8)، فإن hasAnyTokens تطبّقه على input، وعندما تكون needles من النوع String، على needles قبل التجزئة إلى رموز. وعندما تكون needles من النوع Array(String)، تمر عناصرها كما هي ولا يُطبَّق عليها المعالج المسبق. لا يُطبَّق المعالج المسبق إلا في مسار الفهرس النصي، لذا قد تختلف النتائج بين الاستعلامات التي تستخدم الفهرس النصي والاستعلامات التي لا تستخدمه (مثل SETTINGS use_skip_indexes = 0). ويُتسامح مع هذا التباين لتحسين سهولة استخدام البحث النصي الكامل.
الصياغة
hasAnyTokens(input, needles)
الأسماء المستعارة: hasAnyToken الوسيطات القيمة المعادة تُرجِع 1 إذا وُجدت مطابقة واحدة على الأقل، وإلا فتُرجِع 0. UInt8 أمثلة الاستخدام الأساسي مع نمط بحث نصي
Query
CREATE TABLE table (
    id UInt32,
    msg String,
    INDEX idx(msg) TYPE text(tokenizer = splitByString(['()', '\\']))
)
ENGINE = MergeTree
ORDER BY id;

INSERT INTO table VALUES (1, '()a,\\bc()d'), (2, '()\\a()bc\\d'), (3, ',()a\\,bc,(),d,');

SELECT count() FROM table WHERE hasAnyTokens(msg, 'a\\d()');
Response
┌─count()─┐
│       3 │
└─────────┘
حدِّد سلاسل البحث المطلوب البحث عنها كما هي (من دون تجزئة إلى رموز) داخل مصفوفة
Query
SELECT count() FROM table WHERE hasAnyTokens(msg, ['a', 'd']);
Response
┌─count()─┐
│       3 │
└─────────┘
ولِّد أنماط البحث باستخدام الدالة tokens
Query
SELECT count() FROM table WHERE hasAnyTokens(msg, tokens('a()d', 'splitByString', ['()', '\\']));
Response
┌─count()─┐
│       3 │
└─────────┘
أمثلة على استخدام الأعمدة من النوع Array وMap
Query
CREATE TABLE log (
    id UInt32,
    tags Array(String),
    attributes Map(String, String),
    INDEX idx_tags (tags) TYPE text(tokenizer = splitByNonAlpha),
    INDEX idx_attributes_keys mapKeys(attributes) TYPE text(tokenizer = array),
    INDEX idx_attributes_vals mapValues(attributes) TYPE text(tokenizer = array)
)
ENGINE = MergeTree
ORDER BY id;

INSERT INTO log VALUES
    (1, ['clickhouse', 'clickhouse cloud'], {'address': '192.0.0.1', 'log_level': 'INFO'}),
    (2, ['chdb'], {'embedded': 'true', 'log_level': 'DEBUG'});
Response
مثال على عمود من نوع Array
Query
SELECT count() FROM log WHERE hasAnyTokens(tags, 'clickhouse');
Response
┌─count()─┐
│       1 │
└─────────┘
مثال على استخدام mapKeys
Query
SELECT count() FROM log WHERE hasAnyTokens(mapKeys(attributes), ['address', 'log_level']);
Response
┌─count()─┐
│       2 │
└─────────┘
مثال باستخدام mapValues
Query
SELECT count() FROM log WHERE hasAnyTokens(mapValues(attributes), ['192.0.0.1', 'DEBUG']);
Response
┌─count()─┐
│       2 │
└─────────┘

hasPhrase

أُضيف في: v26.4.0 يتحقق مما إذا كان input يحتوي على جميع الرموز من phrase بترتيب متتابع.
يجب أن يكون للعمود input فهرس نصي مُعرّف للحصول على أفضل أداء. إذا لم يكن هناك فهرس نصي مُعرّف، فستُجري الدالة فحصًا كاملًا للعمود، وهو أبطأ بعدة مراتب من البحث عبر الفهرس.
قبل البحث، تُجزِّئ الدالة كلًّا من الوسيطين input وphrase إلى رموز باستخدام مُجزِّئ الرموز المحدد للفهرس النصي. إذا لم يكن للعمود فهرس نصي مُعرّف، فسيُستخدم بدلًا من ذلك مُجزِّئ الرموز splitByNonAlpha — ما لم يتم تمرير مُجزِّئ رموز باعتباره الوسيط الثالث الاختياري. يجب أن يكون وسيط مُجزِّئ الرموز واحدًا من splitByNonAlpha أو splitByString أو ngrams أو asciiCJK.
عندما يعرّف الفهرس النصي معالجًا مسبقًا (على سبيل المثال lowerUTF8)، تطبّقه hasPhrase على كلٍّ من input وphrase قبل تجزئتهما إلى رموز. لا يُطبَّق المعالج المسبق إلا في مسار الفهرس النصي، لذلك قد تختلف النتائج بين الاستعلامات التي تستخدم الفهرس النصي والاستعلامات التي لا تستخدمه (مثل SETTINGS use_skip_indexes = 0). يُتسامح مع هذا التباين لتحسين سهولة استخدام البحث النصي الكامل.
بخلاف hasToken وhasAnyTokens وhasAllTokens، تتطلب hasPhrase أن تظهر الرموز بالترتيب نفسه ومن دون أي رموز فاصلة بينها. على سبيل المثال، تُرجع hasPhrase('the quick brown fox', 'quick fox') القيمة 0 لأن “brown” تظهر بين “quick” و”fox”. الصياغة
hasPhrase(input, phrase[, tokenizer])
الأسماء المستعارة: matchPhrase المعاملات
  • input — عمود الإدخال. String أو FixedString
  • phrase — العبارة المراد البحث عنها. const String
  • tokenizer — أداة تقسيم النص إلى رموز المراد استخدامها. اختياري، والقيمة الافتراضية هي splitByNonAlpha. const String
القيمة المعادة تُرجع 1 إذا عُثر على العبارة كتسلسل متتالٍ من الرموز، وإلا فتُرجع 0. UInt8 أمثلة مطابقة العبارة
Query
SELECT hasPhrase('the quick brown fox jumps', 'quick brown')
Response
┌─hasPhrase('the quick brown fox jumps', 'quick brown')─┐
│                                                      1 │
└────────────────────────────────────────────────────────┘
رموز غير متتالية
Query
SELECT hasPhrase('the quick brown fox jumps', 'quick fox')
Response
┌─hasPhrase('the quick brown fox jumps', 'quick fox')─┐
│                                                    0 │
└──────────────────────────────────────────────────────┘

hasSubsequence

أُضيف في الإصدار: v23.7.0 يتحقق مما إذا كان needle تسلسلاً فرعيًا من haystack. التسلسل الفرعي لسلسلة نصية هو تسلسل يمكن اشتقاقه من سلسلة أخرى بحذف بعض المحارف أو دون حذف أي محرف، من دون تغيير ترتيب المحارف المتبقية. الصياغة
hasSubsequence(haystack, needle)
الوسائط
  • haystack — السلسلة التي يُبحث فيها عن التسلسل الفرعي. String
  • needle — التسلسل الفرعي المطلوب البحث عنه. String
القيمة المعادة يعيد 1 إذا كان needle تسلسلاً فرعياً من haystack، وإلا فيعيد 0. UInt8 أمثلة فحص أساسي لتسلسل فرعي
Query
SELECT hasSubsequence('Hello World', 'HlWrd')
Response
┌─hasSubsequence('Hello World', 'HlWrd')─┐
│                                      1 │
└────────────────────────────────────────┘
تعذّر العثور على تسلسل فرعي
Query
SELECT hasSubsequence('Hello World', 'xyz')
Response
┌─hasSubsequence('Hello World', 'xyz')─┐
│                                    0 │
└──────────────────────────────────────┘

hasSubsequenceCaseInsensitive

استُحدثت في: v23.7.0 مثل hasSubsequence، لكنه يبحث مع تجاهل حالة الأحرف. الصياغة
hasSubsequenceCaseInsensitive(haystack, needle)
الوسيطات
  • haystack — السلسلة النصية التي يُجرى البحث ضمنها. String
  • needle — المتتالية الجزئية المراد البحث عنها. String
القيمة المُعادة تُرجع 1 إذا كانت needle متتالية جزئية من haystack، وإلا فتُرجع 0. UInt8 أمثلة مثال على الاستخدام
Query
SELECT hasSubsequenceCaseInsensitive('garbage', 'ARG');
Response
┌─hasSubsequenceCaseInsensitive('garbage', 'ARG')─┐
│                                               1 │
└─────────────────────────────────────────────────┘

hasSubsequenceCaseInsensitiveUTF8

أُضيف في: v23.7.0 مثل hasSubsequenceUTF8، لكنه يبحث دون التفريق بين الأحرف الكبيرة والصغيرة. الصياغة
hasSubsequenceCaseInsensitiveUTF8(haystack, needle)
الوسيطات
  • haystack — سلسلة مرمّزة بـ UTF8 يُجرى البحث فيها. String
  • needle — سلسلة تسلسل فرعي مرمّزة بـ UTF8 يُبحث عنها. String
القيمة المعادة تُرجِع 1 إذا كانت needle تسلسلاً فرعيًا من haystack، وإلا فتُرجِع 0. UInt8 أمثلة مثال على الاستخدام
Query
SELECT hasSubsequenceCaseInsensitiveUTF8('ClickHouse - столбцовая система управления базами данных', 'СИСТЕМА');
Response
┌─hasSubsequen⋯ 'СИСТЕМА')─┐
│                        1 │
└──────────────────────────┘

hasSubsequenceUTF8

قُدِّمت في: v23.7.0 تشبه hasSubsequence، لكنها تفترض أن haystack و needle سلسلتان نصيتان مرمَّزتان بترميز UTF-8. البنية
hasSubsequenceUTF8(haystack, needle)
الوسائط
  • haystack — السلسلة التي يُبحث فيها. String
  • needle — التسلسل الفرعي المراد البحث عنه. String
القيمة المُعادة تُرجع 1 إذا كان needle تسلسلاً فرعيًا من haystack، وإلا فتُرجع 0. UInt8 أمثلة مثال على الاستخدام
Query
SELECT hasSubsequenceUTF8('картошка', 'кошка');
Response
┌─hasSubsequen⋯', 'кошка')─┐
│                        1 │
└──────────────────────────┘
تسلسل فرعي غير متطابق
Query
SELECT hasSubsequenceUTF8('картошка', 'апельсин');
Response
┌─hasSubsequen⋯'апельсин')─┐
│                        0 │
└──────────────────────────┘

hasToken

أُضيف في: v20.1.0 يتحقق مما إذا كان token المُعطى موجودًا في النص المراد البحث فيه. يستخدم splitByNonAlpha كمُجزِّئ للرموز، أي إن token يُعرَّف بأنه أطول تتابع فرعي ممكن من المحارف المتتالية [0-9A-Za-z_] (الأرقام، ومحارف ASCII، والشرطة السفلية). البنية
hasToken(haystack, token)
الوسيطات
  • haystack — السلسلة النصية المطلوب البحث فيها. String
  • token — التوكن المطلوب البحث عنه. const String
القيمة المُعادة تُرجع 1 إذا عُثر على التوكن، و0 خلاف ذلك. UInt8 أمثلة البحث عن توكن
Query
SELECT hasToken('clickhouse test', 'test')
Response
┌─hasToken('clickhouse test', 'test')─┐
│                                   1 │
└─────────────────────────────────────┘

hasTokenCaseInsensitive

قُدِّمت في: v20.1.0 ينفّذ بحثًا غير حساس لحالة الأحرف عن needle داخل haystack باستخدام الفهرس tokenbf_v1. الصياغة
hasTokenCaseInsensitive(haystack, needle)
المعاملات
  • لا شيء.
القيمة المُعادة أمثلة

hasTokenCaseInsensitiveOrNull

أُضيفت في: v23.1.0 تُجري بحثًا عن needle داخل haystack دون حساسية لحالة الأحرف باستخدام فهرس tokenbf_v1. وتُرجع NULL إذا كان needle غير صالح التكوين. الصيغة
hasTokenCaseInsensitiveOrNull(haystack, needle)
المعاملات
  • لا شيء.
القيمة المُعادة أمثلة

hasTokenOrNull

قُدِّم في: v20.1.0 مثل hasToken، لكنه يُرجع NULL إذا كان الرمز غير مُشكَّل على نحو صحيح. الصيغة
hasTokenOrNull(haystack, token)
الوسيطات
  • haystack — السلسلة المراد البحث فيها. يجب أن تكون ثابتة. String
  • token — الرمز المراد البحث عنه. const String
القيمة المُعادة يُرجع 1 إذا عُثر على الرمز، و0 خلاف ذلك، وNULL إذا كان الرمز غير صحيح التكوين. Nullable(UInt8) أمثلة مثال على الاستخدام
Query
SELECT hasTokenOrNull('apple banana cherry', 'ban ana');
Response
┌─hasTokenOrNu⋯ 'ban ana')─┐
│                     ᴺᵁᴸᴸ │
└──────────────────────────┘

highlight

أُضيفت في: v26.4.0 تُبرز مواضع ظهور مصطلحات البحث في سلسلة نصية عبر إحاطتها بوسوم HTML. تُجري الدالة مطابقة ASCII غير حساسة لحالة الأحرف. وإذا تداخلت عدة مصطلحات بحث أو كانت متجاورة في النص، فتُدمج الأجزاء المطابَقة في مقطع مميّز واحد. الصياغة
highlight(haystack, needles[, open_tag, close_tag])
الوسيطات
  • haystack — النص المراد البحث فيه. String أو FixedString
  • needles — مصفوفة من عبارات البحث المراد إبرازها. const Array(String)
  • open_tag — وسم الفتح الذي يُدرج قبل كل تطابق. القيمة الافتراضية: <em>. const String
  • close_tag — وسم الإغلاق الذي يُدرج بعد كل تطابق. القيمة الافتراضية: </em>. const String
القيمة المُعادة يُرجع النص المُدخل مع إحاطة العبارات المتطابقة بالوسوم المحددة. String أمثلة إبراز أساسي
Query
SELECT highlight('The quick brown fox', ['quick', 'fox'])
Response
┌─highlight('The quick brown fox', ['quick', 'fox'])─┐
│ The <em>quick</em> brown <em>fox</em>              │
└────────────────────────────────────────────────────┘
الوسوم المخصّصة
Query
SELECT highlight('Hello World', ['hello'], '<b>', '</b>')
Response
┌─highlight('Hello World', ['hello'], '<b>', '</b>')─┐
│ <b>Hello</b> World                                 │
└────────────────────────────────────────────────────┘

ilike

قُدِّم في: v20.6.0 مثل like، لكنه يبحث بدون مراعاة حالة الأحرف. ويدعم عبارة ESCAPE الاختيارية (راجع like). البنية
ilike(haystack, pattern[, escape_character])
-- haystack ILIKE pattern [ESCAPE 'escape_character']
الوسيطات
  • haystack — السلسلة النصية التي يُجرى فيها البحث. String أو FixedString
  • pattern — نمط LIKE المطلوب مطابقته. String
  • escape_character — سلسلة اختيارية مكوّنة من محرف واحد تُستخدم كمحرف هروب بدلًا من \. الافتراضي: \. String
القيمة المعادة تُعيد 1 إذا كانت السلسلة تطابق نمط LIKE (غير حساس لحالة الأحرف)، وإلا تُعيد 0. UInt8 أمثلة مثال على الاستخدام
Query
SELECT ilike('ClickHouse', '%house%');
Response
┌─ilike('ClickHouse', '%house%')─┐
│                              1 │
└────────────────────────────────┘

like

أُضيف في: v1.1.0 تُرجع ما إذا كانت السلسلة haystack تطابق تعبير LIKEpattern. يمكن أن يحتوي تعبير LIKE على أحرف عادية والرموز الوصفية التالية:
  • يشير % إلى أي عدد من الأحرف كيفما كانت (بما في ذلك عدم وجود أي أحرف).
  • يشير _ إلى حرف واحد كيفما كان.
  • تُستخدم \ للهروب من الرموز الحرفية % و_ و\.
تعتمد المطابقة على UTF-8، فمثلًا يطابق _ نقطة الترميز Unicode ‏¥، التي تُمثَّل في UTF-8 باستخدام بايتين. إذا لم تكن haystack أو تعبير LIKE صالحَين وفق UTF-8، فسيكون السلوك غير معرّف. لا يُجرى أي تطبيع Unicode تلقائيًا، ويمكنك استخدام الدوال normalizeUTF8* لهذا الغرض. للمطابقة مع % و_ و\ الحرفية (وهي محارف وصفية في LIKE)، أضف قبلها شرطة مائلة عكسية: \% و\_ و\\. وتفقد الشرطة المائلة العكسية معناها الخاص (أي تُفسَّر حرفيًا) إذا سبقت حرفًا غير % أو _ أو \.
يتطلب ClickHouse أيضًا تهريب الشرطات المائلة العكسية داخل السلاسل كما هو موضح هنا، لذا ستحتاج فعليًا إلى كتابة \\% و\\_ و\\\\.
بالنسبة إلى تعابير LIKE من الشكل %needle%، تكون الدالة بالسرعة نفسها التي تتمتع بها الدالة position. أما جميع تعابير LIKE الأخرى فتُحوَّل داخليًا إلى تعبير نمطي وتُنفَّذ بأداء مماثل للدالة match.

عبارة ESCAPE

تحدّد عبارة ESCAPE الاختيارية محرف هروب مخصّصًا (ويجب أن يكون محرف ASCII واحدًا). عند تحديده، يستبدل محرف الهروب المخصّص الشرطة المائلة العكسية الافتراضية عند التعامل مع المحرفين الخاصين % و _. يمكن لمحرف الهروب أن يُستخدم مع ثلاثة أشياء: % (علامة نسبة مئوية حرفية)، و_ (شرطة سفلية حرفية)، ونفسه (محرف هروب حرفي). عند استخدام محرف هروب مخصّص، لا يعود للشرطة المائلة العكسية أي معنى خاص، وتُعامَل على أنها محرف حرفي. البنية
like(haystack, pattern[, escape_character])
-- haystack LIKE pattern [ESCAPE 'escape_character']
الوسيطات
  • haystack — السلسلة النصية التي يُجرى فيها البحث. String أو FixedString
  • pattern — نمط LIKE المستخدم للمطابقة. يمكن أن يحتوي على % (يطابق أي عدد من المحارف)، و_ (يطابق محرفًا واحدًا)، و\ كحرف هروب. String
  • escape_character — سلسلة نصية اختيارية مكوّنة من محرف واحد تُستخدم كحرف هروب بدلًا من \. القيمة الافتراضية: \. String
القيمة المُعادة تُعيد 1 إذا كانت السلسلة النصية تطابق نمط LIKE، وإلا فتُعيد 0. UInt8 أمثلة مثال على الاستخدام
Query
SELECT like('ClickHouse', '%House');
Response
┌─like('ClickHouse', '%House')─┐
│                            1 │
└──────────────────────────────┘
محرف بدل لحرف واحد
Query
SELECT like('ClickHouse', 'Click_ouse');
Response
┌─like('ClickH⋯lick_ouse')─┐
│                        1 │
└──────────────────────────┘
نمط لا يتطابق
Query
SELECT like('ClickHouse', '%SQL%');
Response
┌─like('ClickHouse', '%SQL%')─┐
│                           0 │
└─────────────────────────────┘
بند ESCAPE
Query
SELECT '50%off' LIKE '50#%off' ESCAPE '#';
Response
┌─like('50%off', '50#%off', '#')─┐
│                              1 │
└────────────────────────────────┘

locate

أُضيفت في: v18.16.0 مثل position، ولكن مع تبديل الوسيطين haystack وlocate.
سلوك يعتمد على الإصداريعتمد سلوك هذه الدالة على إصدار ClickHouse:
  • في الإصدارات < v24.3، كانت locate اسمًا مستعارًا للدالة position، وكانت تقبل الوسائط (haystack, needle[, start_pos]).
  • في الإصدارات >= 24.3، أصبحت locate دالة مستقلة (لتحقيق توافق أفضل مع MySQL)، وتقبل الوسائط (needle, haystack[, start_pos]). يمكن استعادة السلوك السابق باستخدام الإعداد function_locate_has_mysql_compatible_argument_order = false.
الصياغة
locate(needle, haystack[, start_pos])
الوسيطات
  • needle — السلسلة الفرعية المطلوب البحث عنها. String
  • haystack — السلسلة التي يُجرى فيها البحث. String أو Enum
  • start_pos — اختياري. الموضع في haystack الذي يبدأ منه البحث (مع بدء العد من 1). UInt
القيمة المُعادة يعيد موضع البداية محسوبًا بالبايتات، بدءًا من 1، إذا عُثر على السلسلة الفرعية، و0 إذا لم يُعثر عليها. UInt64 أمثلة الاستخدام الأساسي
Query
SELECT locate('ca', 'abcabc')
Response
┌─locate('ca', 'abcabc')─┐
│                      3 │
└────────────────────────┘

match

أُضيف في: v1.1.0 يتحقق مما إذا كانت السلسلة النصية المُدخلة تطابق نمط التعبير النمطي المُعطى. تستخدم هذه الدالة مكتبة RE2 للتعبيرات النمطية. يُرجى الرجوع إلى re2 للاطلاع على الصياغة المدعومة. تعمل المطابقة على افتراض UTF-8. فعلى سبيل المثال، يُستخدَم ¥ داخليًا على هيئة بايتين، لكن المطابقة تتعامل معه باعتباره نقطة ترميز واحدة. يجب ألا يحتوي التعبير النمطي على بايتات NULL. إذا لم تكن السلسلة النصية المُدخلَة أو النمط بتنسيق UTF-8 صالحين، فسيكون السلوك غير معرّف. وعلى خلاف السلوك الافتراضي في re2، فإن . يطابق فواصل الأسطر. لتعطيل ذلك، أضف (?-s) في بداية النمط. النمط غير مقيَّد. ولمطابقة السلسلة النصية بالكامل، قيِّد النمط بنفسك باستخدام ^ و $. إذا كنت تريد فقط البحث عن سلاسل فرعية، فيمكنك استخدام الدالتين like أو position بدلًا من ذلك، إذ تعملان أسرع بكثير من هذه الدالة. صياغة عامل التشغيل البديلة: haystack REGEXP pattern. الصياغة
match(haystack, pattern)
الأسماء المستعارة: REGEXP_MATCHES الوسيطات
  • haystack — سلسلة يُبحث فيها عن النمط. String
  • pattern — نمط تعبير نمطي. يمكن أن يكون ثابتًا أو أن يأتي من عمود. String
القيمة المعادة تُرجع 1 إذا كان هناك تطابق مع النمط، و0 خلاف ذلك. UInt8 أمثلة مطابقة الأنماط الأساسية
Query
SELECT match('Hello World', 'Hello.*')
Response
┌─match('Hello World', 'Hello.*')─┐
│                               1 │
└─────────────────────────────────┘
النمط لا يتطابق
Query
SELECT match('Hello World', 'goodbye.*')
Response
┌─match('Hello World', 'goodbye.*')─┐
│                                 0 │
└───────────────────────────────────┘
مطابقة جزء من سلسلة نصية
Query
SELECT match('abcde', 'b.*d'), match('abcde', '^b.*d$')
Response
┌─match('abcde', 'b.*d')─┬─match('abcde', '^b.*d$')─┐
│                       1 │                         0 │
└─────────────────────────┴───────────────────────────┘

multiFuzzyMatchAllIndices

أُضيف في: v20.1.0 يشبه multiFuzzyMatchAny، لكنه يعيد مصفوفة بجميع الفهارس المطابقة لـ haystack، بأي ترتيب، ضمن مسافة تحرير ثابتة. الصياغة
multiFuzzyMatchAllIndices(haystack, distance, [pattern1, pattern2, ..., patternN])
الوسيطات
  • haystack — سلسلة يُجرى البحث فيها. String
  • distance — الحد الأقصى لمسافة التحرير للمطابقة التقريبية. UInt8
  • pattern — مصفوفة من الأنماط المطلوب المطابقة معها. Array(String)
القيمة المعادة يعيد مصفوفة تحتوي على جميع الفهارس (بدءًا من 1) التي تطابق haystack ضمن مسافة التحرير المحددة، بأي ترتيب. ويعيد مصفوفة فارغة إذا لم يتم العثور على أي تطابقات. Array(UInt64) أمثلة مثال على الاستخدام
Query
SELECT multiFuzzyMatchAllIndices('ClickHouse', 2, ['ClickHouse', 'ClckHouse', 'ClickHose', 'House']);
Response
┌─multiFuzzyMa⋯, 'House'])─┐
│ [3,1,4,2]                │
└──────────────────────────┘

multiFuzzyMatchAny

أُضيف في: v20.1.0 مثل multiMatchAny، لكنه يعيد القيمة 1 إذا طابق أي نمط النص ضمن مسافة تحرير ثابتة. تعتمد هذه الدالة على الميزة التجريبية في مكتبة hyperscan، وقد تكون بطيئة في بعض الحالات الحدّية. يعتمد الأداء على قيمة مسافة التحرير والأنماط المستخدمة، لكنه يكون دائمًا أعلى كلفة مقارنةً بالنظائر غير التقريبية.
لا تدعم عائلة الدوال multiFuzzyMatch*() التعبيرات النمطية UTF-8 (إذ تتعامل معها كتسلسل من البايتات) بسبب قيود hyperscan.
البنية
multiFuzzyMatchAny(haystack, distance, [pattern1, pattern2, ..., patternN])
المعاملات
  • haystack — السلسلة التي يُجرى فيها البحث. String
  • distance — الحد الأقصى لمسافة التحرير للمطابقة التقريبية. UInt8
  • pattern — اختياري. مصفوفة من الأنماط للمطابقة معها. Array(String)
القيمة المعادة تُرجِع 1 إذا طابق أي نمط القيمة haystack ضمن مسافة التحرير المحددة، وإلا فتُرجِع 0. UInt8 أمثلة مثال على الاستخدام
Query
SELECT multiFuzzyMatchAny('ClickHouse', 2, ['ClickHouse', 'ClckHouse', 'ClickHose']);
Response
┌─multiFuzzyMa⋯lickHose'])─┐
│                        1 │
└──────────────────────────┘

multiFuzzyMatchAnyIndex

أُضيف في: v20.1.0 مثل multiFuzzyMatchAny، لكنه يُرجع أي فهرس يطابق haystack ضمن مسافة تحرير ثابتة. الصياغة
multiFuzzyMatchAnyIndex(haystack, distance, [pattern1, pattern2, ..., patternn])
الوسائط
  • haystack — السلسلة النصية التي يُجرى البحث فيها. String
  • distance — الحد الأقصى لمسافة التحرير للمطابقة التقريبية. UInt8
  • pattern — مصفوفة من الأنماط المطلوب المطابقة معها. Array(String)
القيمة المعادة يعيد فهرس أي نمط يطابق haystack ضمن مسافة التحرير المحددة (بدءًا من 1)، وإلا يعيد 0. UInt64 أمثلة مثال على الاستخدام
Query
SELECT multiFuzzyMatchAnyIndex('ClickHouse', 2, ['ClckHouse', 'ClickHose', 'ClickHouse']);
Response
┌─multiFuzzyMa⋯ickHouse'])─┐
│                        2 │
└──────────────────────────┘

multiMatchAllIndices

قُدِّمت في: v20.1.0 مثل multiMatchAny، لكنها تُرجع مصفوفة بجميع الفهارس التي تطابق haystack بأي ترتيب. البنية
multiMatchAllIndices(haystack, [pattern1, pattern2, ..., patternn])
الوسيطات
  • haystack — السلسلة التي يُجرى البحث فيها. String
  • pattern — التعبيرات النمطية المطلوب المطابقة معها. String
القيمة المُعادة مصفوفة تحتوي على جميع الفهارس (بدءًا من 1) التي تطابق haystack بأي ترتيب. وتُرجع مصفوفة فارغة إذا لم يتم العثور على أي تطابقات. Array(UInt64) أمثلة مثال على الاستخدام
Query
SELECT multiMatchAllIndices('ClickHouse', ['[0-9]', 'House', 'Click', 'ouse']);
Response
┌─multiMatchAl⋯', 'ouse'])─┐
│ [3, 2, 4]                │
└──────────────────────────┘

multiMatchAny

أُضيفت في: v20.1.0 تحقّق مما إذا كان واحد على الأقل من عدة أنماط للتعبيرات النمطية يطابق النص المراد البحث فيه. إذا كنت تريد فقط البحث عن عدة سلاسل فرعية داخل سلسلة نصية، يمكنك استخدام الدالة multiSearchAny بدلًا من ذلك، فهي أسرع بكثير من هذه الدالة. البنية
multiMatchAny(haystack, pattern1[, pattern2, ...])
الوسيطات
  • haystack — السلسلة التي يُبحث فيها عن الأنماط. String
  • pattern1[, pattern2, ...] — مصفوفة تضم نمط تعبير نمطي واحدًا أو أكثر. Array(String)
القيمة المُعادة تُرجع 1 إذا طابق أي نمط، و0 خلاف ذلك. UInt8 أمثلة مطابقة عدة أنماط
Query
SELECT multiMatchAny('Hello World', ['Hello.*', 'foo.*'])
Response
┌─multiMatchAny('Hello World', ['Hello.*', 'foo.*'])─┐
│                                                  1 │
└────────────────────────────────────────────────────┘
لا يطابق أي نمط
Query
SELECT multiMatchAny('Hello World', ['goodbye.*', 'foo.*'])
Response
┌─multiMatchAny('Hello World', ['goodbye.*', 'foo.*'])─┐
│                                                    0 │
└──────────────────────────────────────────────────────┘

multiMatchAnyIndex

أُضيف في: v20.1.0 مثل multiMatchAny، لكنه يُرجع فهرس أي تطابق مع haystack. الصيغة
multiMatchAnyIndex(haystack, [pattern1, pattern2, ..., patternn])
الوسائط
  • haystack — سلسلة نصية يُجرى البحث فيها. String
  • pattern — تعبيرات نمطية تجري المطابقة معها. Array(String)
القيمة المعادة تعيد فهرس أول نمط مطابق (ابتداءً من 1)، أو 0 إذا لم يتم العثور على أي مطابقة. UInt64 أمثلة مثال على الاستخدام
Query
SELECT multiMatchAnyIndex('ClickHouse', ['[0-9]', 'House', 'Click']);
Response
┌─multiMatchAn⋯, 'Click'])─┐
│                        3 │
└──────────────────────────┘

multiSearchAllPositions

أُضيف في: v20.1.0 مثل position، لكنه يعيد مصفوفة من المواضع (بالبايت، بدءًا من 1) لعدة سلاسل فرعية needle ضمن سلسلة haystack. لا تدعم جميع دوال multiSearch*() أكثر من 2^8 من قيم needle. الصياغة
multiSearchAllPositions(haystack, needle1[, needle2, ...])
الوسيطات
  • haystack — سلسلة يُجرى البحث فيها. String
  • needle1[, needle2, ...] — مصفوفة تضم سلسلة فرعية واحدة أو أكثر للبحث عنها. Array(String)
القيمة المعادة تعيد مصفوفة تحتوي على موضع البداية بالبايت، مع بدء العد من 1، إذا عُثر على السلسلة الفرعية، و0 إذا لم يُعثر عليها. Array(UInt64) أمثلة البحث عن عدة سلاسل فرعية
Query
SELECT multiSearchAllPositions('Hello, World!', ['hello', '!', 'world'])
Response
┌─multiSearchAllPositions('Hello, World!', ['hello', '!', 'world'])─┐
│ [0,13,0]                                                          │
└───────────────────────────────────────────────────────────────────┘

multiSearchAllPositionsCaseInsensitive

أُضيف في: v20.1.0 يشبه multiSearchAllPositions، لكنه لا يميّز بين الأحرف الكبيرة والصغيرة. الصيغة
multiSearchAllPositionsCaseInsensitive(haystack, needle1[, needle2, ...])
الوسيطات
  • haystack — سلسلة نصية يُجرى البحث فيها. String
  • needle1[, needle2, ...] — مصفوفة تضم سلسلة فرعية واحدة أو أكثر للبحث عنها. Array(String)
القيمة المعادة تعيد مصفوفة تتضمن موضع البداية بالبايتات مع بدء العد من 1 (إذا عُثر على السلسلة الفرعية)، و0 إذا لم يُعثر على السلسلة الفرعية. Array(UInt64) أمثلة بحث متعدد غير حساس لحالة الأحرف
Query
SELECT multiSearchAllPositionsCaseInsensitive('ClickHouse',['c','h'])
Response
┌─multiSearchA⋯['c', 'h'])─┐
│ [1,6]                    │
└──────────────────────────┘

multiSearchAllPositionsCaseInsensitiveUTF8

أُضيف في: v20.1.0 مثل multiSearchAllPositionsUTF8، لكنه يتجاهل اختلاف حالة الأحرف. البنية
multiSearchAllPositionsCaseInsensitiveUTF8(haystack, [needle1, needle2, ..., needleN])
الوسائط
  • haystack — سلسلة مرمّزة بترميز UTF-8 يُجرى البحث فيها. String
  • needle — سلاسل فرعية مرمّزة بترميز UTF-8 يُبحث عنها. Array(String)
القيمة المُعادة مصفوفة بمواقع البداية بالبايت، مع بدء العد من 1 (إذا عُثر على السلسلة الفرعية). وتُرجع 0 إذا لم يُعثر على السلسلة الفرعية. Array أمثلة بحث UTF-8 غير متأثر بحالة الأحرف
Query
SELECT multiSearchAllPositionsCaseInsensitiveUTF8('Здравствуй, мир!', ['здравствуй', 'МИР']);
Response
┌─multiSearchA⋯й', 'МИР'])─┐
│ [1, 13]                  │
└──────────────────────────┘

multiSearchAllPositionsUTF8

متوفرة منذ: v20.1.0 تشبه multiSearchAllPositions، لكنها تفترض أن haystack والسلاسل الفرعية needle عبارة عن سلاسل نصية مرمّزة بترميز UTF-8. الصياغة
multiSearchAllPositionsUTF8(haystack, needle1[, needle2, ...])
الوسيطات
  • haystack — سلسلة مرمّزة بترميز UTF-8 يُجرى البحث فيها. String
  • needle1[, needle2, ...] — مصفوفة من السلاسل الفرعية المرمّزة بترميز UTF-8 المطلوب البحث عنها. Array(String)
القيمة المعادة تعيد مصفوفة تتضمّن مواضع البداية بالبايتات، محسوبةً ابتداءً من 1 (إذا عُثر على السلسلة الفرعية)، و0 إذا لم يُعثر على السلسلة الفرعية. Array أمثلة بحث متعدد في UTF-8
Query
SELECT multiSearchAllPositionsUTF8('ClickHouse',['C','H'])
Response
┌─multiSearchAllPositionsUTF8('ClickHouse', ['C', 'H'])─┐
│ [1,6]                                                 │
└───────────────────────────────────────────────────────┘

multiSearchAny

أُضيف في: v20.1.0 يتحقق مما إذا كانت واحدة على الأقل من السلاسل المطلوب البحث عنها تطابق السلسلة المراد البحث فيها. توفّر الدوال multiSearchAnyCaseInsensitive، multiSearchAnyUTF8 وmultiSearchAnyCaseInsensitiveUTF8 صيغًا غير حساسة لحالة الأحرف و/أو صيغ UTF-8 لهذه الدالة. الصيغة
multiSearchAny(haystack, needle1[, needle2, ...])
الوسيطات
  • haystack — السلسلة التي يُجرى البحث فيها. String
  • needle1[, needle2, ...] — مصفوفة من السلاسل الفرعية المراد البحث عنها. Array(String)
القيمة المعادة يعيد 1 عند وجود مطابقة واحدة على الأقل، وإلا يعيد 0. UInt8 أمثلة البحث عن أي مطابقة
Query
SELECT multiSearchAny('ClickHouse',['C','H'])
Response
┌─multiSearchAny('ClickHouse', ['C', 'H'])─┐
│                                        1 │
└──────────────────────────────────────────┘

multiSearchAnyCaseInsensitive

أُضيفت في: v20.1.0 مثل multiSearchAny، لكنه يتجاهل حالة الأحرف. البنية
multiSearchAnyCaseInsensitive(haystack, [needle1, needle2, ..., needleN])
الوسيطات
  • haystack — السلسلة التي يُجرى فيها البحث. String
  • needle — السلاسل الفرعية المطلوب البحث عنها. Array(String)
القيمة المعادة يعيد 1 إذا وُجدت مطابقة واحدة على الأقل غير حسّاسة لحالة الأحرف، وإلا فيعيد 0. UInt8 أمثلة بحث غير حسّاس لحالة الأحرف
Query
SELECT multiSearchAnyCaseInsensitive('ClickHouse',['c','h'])
Response
┌─multiSearchAnyCaseInsensitive('ClickHouse', ['c', 'h'])─┐
│                                                       1 │
└─────────────────────────────────────────────────────────┘

multiSearchAnyCaseInsensitiveUTF8

استُحدث في: v20.1.0 مثل multiSearchAnyUTF8 لكنه لا يميّز بين الأحرف الكبيرة والصغيرة. الصياغة
multiSearchAnyCaseInsensitiveUTF8(haystack, [needle1, needle2, ..., needleN])
الوسيطات
  • haystack — سلسلة UTF-8 يُجرى فيها البحث. String
  • needle — سلاسل فرعية بترميز UTF-8 يُبحث عنها. Array(String)
القيمة المُعادة تُرجع 1 إذا وُجدت مطابقة واحدة على الأقل دون حساسية لحالة الأحرف، وإلا فتُرجع 0. UInt8 أمثلة في سلسلة UTF-8 ‘Здравствуйте’، تحقّق مما إذا كان الحرف ‘з’ (حرفًا صغيرًا) موجودًا
Query
SELECT multiSearchAnyCaseInsensitiveUTF8('Здравствуйте',['з'])
Response
┌─multiSearchA⋯те', ['з'])─┐
│                        1 │
└──────────────────────────┘

multiSearchAnyUTF8

أُضيفت في: v20.1.0 مثل multiSearchAny، لكنها تفترض أن haystack والسلاسل الفرعية needle هي سلاسل نصية مرمّزة بترميز UTF-8. الصيغة
multiSearchAnyUTF8(haystack, [needle1, needle2, ..., needleN])
الوسيطات
  • haystack — سلسلة UTF-8 يُجرى البحث داخلها. String
  • needle — سلاسل فرعية بترميز UTF-8 يُبحث عنها. Array(String)
القيمة المُعادة تُرجع 1 إذا وُجدت مطابقة واحدة على الأقل، وإلا فتُرجع 0 إذا لم توجد أي مطابقة. UInt8 أمثلة باعتبار ‘你好,世界’ (‘Hello, world’) سلسلة UTF-8، تحقّق مما إذا كانت السلسلة تحتوي على أي من الحرفين 你 أو 界
Query
SELECT multiSearchAnyUTF8('你好,世界', ['你', '界'])
Response
┌─multiSearchA⋯你', '界'])─┐
│                        1 │
└──────────────────────────┘

multiSearchFirstIndex

أُضيف في: v20.1.0 يبحث عن عدة سلاسل needle داخل سلسلة haystack (مع مراعاة حالة الأحرف)، ويُرجع فهرسًا يبدأ من 1 لأول needle يتم العثور عليه. البنية
multiSearchFirstIndex(haystack, [needle1, needle2, ..., needleN])
الوسائط
  • haystack — السلسلة النصية المطلوب البحث فيها. String
  • needles — مصفوفة من السلاسل النصية المطلوب البحث عنها. Array(String)
القيمة المُعادة تعيد الفهرس الذي يبدأ من 1 (أي الموضع داخل مصفوفة needles) لأول needle يُعثر عليه في haystack. وتعيد 0 إذا لم يتم العثور على أي من عناصر needles. البحث حساس لحالة الأحرف. UInt64 أمثلة مثال على الاستخدام
Query
SELECT multiSearchFirstIndex('ClickHouse Database', ['Click', 'Database', 'Server']);
Response
┌─multiSearchF⋯ 'Server'])─┐
│                        1 │
└──────────────────────────┘
السلوك المراعي لحالة الأحرف
Query
SELECT multiSearchFirstIndex('ClickHouse Database', ['CLICK', 'Database', 'Server']);
Response
┌─multiSearchF⋯ 'Server'])─┐
│                        2 │
└──────────────────────────┘
لم يتم العثور على أي تطابق
Query
SELECT multiSearchFirstIndex('Hello World', ['goodbye', 'test']);
Response
┌─multiSearchF⋯', 'test'])─┐
│                        0 │
└──────────────────────────┘

multiSearchFirstIndexCaseInsensitive

قُدِّمت في: v20.1.0 تعيد الفهرس i (ابتداءً من 1) لأول needle&#95;i يتم العثور عليه من اليسار في السلسلة haystack، وتعيد 0 بخلاف ذلك. يتجاهل حالة الأحرف. البنية
multiSearchFirstIndexCaseInsensitive(haystack, [needle1, needle2, ..., needleN]
الوسيطات
  • haystack — السلسلة النصية التي يُجرى فيها البحث. String
  • needle — السلاسل الفرعية المراد البحث عنها. Array(String)
القيمة المُعادة يُرجع الفهرس (بدءًا من 1) لأول needle يُعثر عليه من جهة اليسار. وإذا لم توجد أي مطابقة، فستكون القيمة 0. UInt8 أمثلة مثال على الاستخدام
Query
SELECT multiSearchFirstIndexCaseInsensitive('hElLo WoRlD', ['World', 'Hello']);
Response
┌─multiSearchF⋯, 'Hello'])─┐
│                        1 │
└──────────────────────────┘

multiSearchFirstIndexCaseInsensitiveUTF8

أُضيفت في: v20.1.0 تبحث عن عدة سلاسل needle داخل سلسلة haystack، من دون تمييز بين الأحرف الكبيرة والصغيرة مع دعم ترميز UTF-8، وتُرجع فهرسًا يبدأ من 1 لأول needle يتم العثور عليه. الصيغة
multiSearchFirstIndexCaseInsensitiveUTF8(haystack, [needle1, needle2, ..., needleN])
الوسيطات
  • haystack — السلسلة النصية المطلوب البحث فيها. String
  • needles — مصفوفة من السلاسل النصية المطلوب البحث عنها. Array(String)
القيمة المُعادة تُرجع الفهرس ذا الأساس 1 (أي الموضع في مصفوفة needles) لأول سلسلة يتم العثور عليها داخل haystack. وتُرجع 0 إذا لم يتم العثور على أي سلسلة. البحث غير حساس لحالة الأحرف، ويراعي ترميز المحارف UTF-8. UInt64 أمثلة مثال على الاستخدام
Query
SELECT multiSearchFirstIndexCaseInsensitiveUTF8('ClickHouse Database', ['CLICK', 'data', 'server']);
Response
┌─multiSearchF⋯ 'server'])─┐
│                        1 │
└──────────────────────────┘
التعامل مع حالة الأحرف في UTF-8
Query
SELECT multiSearchFirstIndexCaseInsensitiveUTF8('Привет Мир', ['мир', 'ПРИВЕТ']);
Response
┌─multiSearchF⋯ 'ПРИВЕТ'])─┐
│                        1 │
└──────────────────────────┘
لم يتم العثور على أي تطابق
Query
SELECT multiSearchFirstIndexCaseInsensitiveUTF8('Hello World', ['goodbye', 'test']);
Response
┌─multiSearchF⋯', 'test'])─┐
│                        0 │
└──────────────────────────┘

multiSearchFirstIndexUTF8

قُدِّمت في: v20.1.0 تُرجع الفهرس i (بدءًا من 1) لأول needle&#95;i يتم العثور عليه من أقصى اليسار في السلسلة haystack، وتُرجع 0 بخلاف ذلك. وتفترض أن haystack وneedle سلسلتان مرمّزتان بترميز UTF-8. البنية
multiSearchFirstIndexUTF8(haystack, [needle1, needle2, ..., needleN])
الوسيطات
  • haystack — سلسلة UTF-8 يُجرى البحث فيها. String
  • needle — مصفوفة من السلاسل الفرعية بترميز UTF-8 المطلوب البحث عنها. Array(String)
القيمة المعادة يعيد الفهرس (بدءًا من 1) لأول needle يتم العثور عليه من جهة اليسار. وإذا لم توجد أي مطابقة، فتكون القيمة 0. UInt8 أمثلة مثال على الاستخدام
Query
SELECT multiSearchFirstIndexUTF8('Здравствуйте мир', ['мир', 'здравствуйте']);
Response
┌─multiSearchF⋯вствуйте'])─┐
│                        1 │
└──────────────────────────┘

multiSearchFirstPosition

قُدِّمت في: v20.1.0 تشبه position، لكنها تُرجع الإزاحة الأولى في سلسلة haystack التي تطابق أيًا من سلاسل needle المتعددة. توفّر الدوال multiSearchFirstPositionCaseInsensitive وmultiSearchFirstPositionUTF8 وmultiSearchFirstPositionCaseInsensitiveUTF8 أشكالًا غير حساسة لحالة الأحرف و/أو أشكال UTF-8 لهذه الدالة. الصياغة
multiSearchFirstPosition(haystack, needle1[, needle2, ...])
الوسيطات
  • haystack — السلسلة النصية التي يُجرى فيها البحث. String
  • needle1[, needle2, ...] — مصفوفة تضم سلسلة فرعية واحدة أو أكثر للبحث عنها. Array(String)
القيمة المعادة يعيد أول إزاحة في سلسلة haystack تطابق أيًا من سلاسل needle المتعددة، وإلا فستكون 0 إذا لم يُعثر على أي تطابق. UInt64 أمثلة البحث عن أول موضع
Query
SELECT multiSearchFirstPosition('Hello World',['llo', 'Wor', 'ld'])
Response
┌─multiSearchFirstPosition('Hello World', ['llo', 'Wor', 'ld'])─┐
│                                                             3 │
└───────────────────────────────────────────────────────────────┘

multiSearchFirstPositionCaseInsensitive

تم تقديمه في: v20.1.0 مثل multiSearchFirstPosition، لكنه لا يميّز بين الأحرف الكبيرة والصغيرة. البنية
multiSearchFirstPositionCaseInsensitive(haystack, [needle1, needle2, ..., needleN])
الوسيطات
  • haystack — السلسلة التي يُجرى فيها البحث. String
  • needle — مصفوفة من السلاسل الفرعية المطلوب البحث عنها. Array(String)
القيمة المعادة تعيد أول إزاحة من اليسار في سلسلة haystack تطابق أيًّا من سلاسل needle. وتعيد 0 إذا لم توجد أي مطابقة. UInt64 أمثلة أول موضع دون حساسية لحالة الأحرف
Query
SELECT multiSearchFirstPositionCaseInsensitive('HELLO WORLD',['wor', 'ld', 'ello'])
Response
┌─multiSearchFirstPositionCaseInsensitive('HELLO WORLD', ['wor', 'ld', 'ello'])─┐
│                                                                             2 │
└───────────────────────────────────────────────────────────────────────────────┘

multiSearchFirstPositionCaseInsensitiveUTF8

أُضيف في: v20.1.0 يشبه multiSearchFirstPosition، لكنه يفترض أن haystack وneedle سلسلتان بترميز UTF-8 ولا يميّز بين الأحرف الكبيرة والصغيرة. الصياغة
multiSearchFirstPositionCaseInsensitiveUTF8(haystack, [needle1, needle2, ..., needleN])
المعاملات
  • haystack — سلسلة نصية بترميز UTF-8 يُجرى البحث فيها. String
  • needle — مصفوفة من السلاسل الفرعية بترميز UTF-8 المطلوب البحث عنها. Array(String)
القيمة المعادة تعيد أول إزاحة في سلسلة haystack تطابق أيًّا من سلاسل needle المتعددة، مع تجاهل حالة الأحرف. وتعيد 0 إذا لم يتم العثور على أي تطابق. UInt64 أمثلة اعثر على أول إزاحة في سلسلة UTF-8 ‘Здравствуй, мир’ (‘Hello, world’) تطابق أيًّا من قيم needle المعطاة
Query
SELECT multiSearchFirstPositionCaseInsensitiveUTF8('Здравствуй, мир', ['МИР', 'вст', 'Здра'])
Response
┌─multiSearchFirstPositionCaseInsensitiveUTF8('Здравствуй, мир', ['МИР', 'вст', 'Здра'])─┐
│                                                                                      1 │
└────────────────────────────────────────────────────────────────────────────────────────┘

multiSearchFirstPositionUTF8

أُضيفت في: v20.1.0 مثل multiSearchFirstPosition، لكنه يفترض أن haystack وneedle سلسلتان نصيتان بترميز UTF-8. البنية
multiSearchFirstPositionUTF8(haystack, [needle1, needle2, ..., needleN])
الوسيطات
  • haystack — سلسلة UTF-8 يُجرى البحث ضمنها. String
  • needle — مصفوفة من المقاطع الفرعية بترميز UTF-8 المطلوب البحث عنها. Array(String)
القيمة المُعادة أول إزاحة في سلسلة haystack تطابق أيًا من سلاسل needle المتعددة. تُعيد 0 إذا لم توجد أي مطابقة. UInt64 أمثلة اعثر على أول إزاحة في سلسلة UTF-8 ‘Здравствуй, мир’ (‘Hello, world’) تطابق أيًا من قيم needle المعطاة
Query
SELECT multiSearchFirstPositionUTF8('Здравствуй, мир',['мир', 'вст', 'авст'])
Response
┌─multiSearchFirstPositionUTF8('Здравствуй, мир', ['мир', 'вст', 'авст'])─┐
│                                                                       4 │
└─────────────────────────────────────────────────────────────────────────┘

ngramDistance

أُضيفت في: v20.1.0 تحسب مسافة 4-gram بين سلسلتين نصيتين. ولهذا، تحسب الفرق المتماثل بين مجموعتين متعدّدتي العناصر من 4-grams ثم تقسّمه على مجموع عدد عناصرهما. كلما صغرت القيمة المُعادة، زاد التشابه بين السلسلتين النصيتين. للبحث غير المتأثر بحالة الأحرف و/أو بتنسيق UTF8، استخدم الدوال ngramDistanceCaseInsensitive, ngramDistanceUTF8, ngramDistanceCaseInsensitiveUTF8. البنية
ngramDistance(haystack, needle)
الوسيطات
  • haystack — سلسلة نصية للمقارنة. String
  • needle — سلسلة نصية للمقارنة. String
القيمة المُعادة يُرجع عددًا من النوع Float32 بين 0 و1. وكلما صغرت القيمة المُعادة، زاد التشابه بين السلسلتين. Float32 أمثلة حساب مسافة 4-gram
Query
SELECT ngramDistance('ClickHouse', 'ClickHouses')
Response
┌─ngramDistance('ClickHouse', 'ClickHouses')─┐
│                                        0.1 │
└────────────────────────────────────────────┘

ngramDistanceCaseInsensitive

قُدِّمت في: v20.1.0 توفّر نسخة غير حساسة لحالة الأحرف من ngramDistance. تحسب مسافة 4-gram بين سلسلتين نصيتين مع تجاهل حالة الأحرف. كلما صغرت القيمة المُعادة، زاد التشابه بين السلسلتين النصيتين. الصيغة
ngramDistanceCaseInsensitive(haystack, needle)
المعاملات
  • haystack — سلسلة المقارنة الأولى. String
  • needle — سلسلة المقارنة الثانية. String
القيمة المُعادة تعيد رقمًا من النوع Float32 بين 0 و1. Float32 أمثلة مسافة 4-gram بدون تمييز حالة الأحرف
Query
SELECT ngramDistanceCaseInsensitive('ClickHouse','clickhouse')
Response
┌─ngramDistanceCaseInsensitive('ClickHouse','clickhouse')─┐
│                                                       0 │
└─────────────────────────────────────────────────────────┘

ngramDistanceCaseInsensitiveUTF8

أُضيف في: v20.1.0 يوفّر إصدار UTF-8 من ngramDistance لا يراعي حالة الأحرف. يفترض أن السلسلتين needle وhaystack مرمَّزتان بترميز UTF-8، ولا يراعي حالة الأحرف. يحسب مسافة 3-gram بين سلسلتين بترميز UTF-8 دون مراعاة حالة الأحرف. كلما صغرت القيمة المُعادة، زاد التشابه بين السلسلتين. البنية
ngramDistanceCaseInsensitiveUTF8(haystack, needle)
الوسائط
  • haystack — سلسلة المقارنة الأولى المرمّزة بترميز UTF-8. String
  • needle — سلسلة المقارنة الثانية المرمّزة بترميز UTF-8. String
القيمة المعادة تعيد قيمة من نوع Float32 بين 0 و1. Float32 أمثلة مسافة 3-gram غير الحساسة لحالة الأحرف في UTF-8
Query
SELECT ngramDistanceCaseInsensitiveUTF8('abcde','CDE')
Response
┌─ngramDistanceCaseInsensitiveUTF8('abcde','CDE')─┐
│                                             0.5 │
└─────────────────────────────────────────────────┘

ngramDistanceUTF8

قُدِّمت في: v20.1.0 يوفّر إصدار UTF-8 من ngramDistance. يفترض أن سلسلتي needle وhaystack مُشفَّرتان بترميز UTF-8. يحسب مسافة 3-gram بين سلسلتين بترميز UTF-8. كلما كانت القيمة المُعادة أصغر، زاد التشابه بين السلسلتين. البنية
ngramDistanceUTF8(haystack, needle)
الوسائط
  • haystack — سلسلة المقارنة الأولى المُرمَّزة بـ UTF-8. String
  • needle — سلسلة المقارنة الثانية المُرمَّزة بـ UTF-8. String
القيمة المُعادة يعيد عددًا من نوع Float32 بين 0 و1. Float32 أمثلة مسافة 3-gram بترميز UTF-8
Query
SELECT ngramDistanceUTF8('abcde','cde')
Response
┌─ngramDistanceUTF8('abcde','cde')─┐
│                               0.5 │
└───────────────────────────────────┘

ngramSearch

أُضيف في: v20.1.0 يتحقق مما إذا كانت مسافة 4-gram بين سلسلتين نصيتين أقل من أو تساوي عتبة محددة. لإجراء بحث غير حساس لحالة الأحرف أو بتنسيق UTF8 أو كليهما، استخدم الدوال ngramSearchCaseInsensitive وngramSearchUTF8 وngramSearchCaseInsensitiveUTF8. الصيغة
ngramSearch(haystack, needle)
الوسيطات
  • haystack — سلسلة نصية للمقارنة. String
  • needle — سلسلة نصية للمقارنة. String
القيمة المُعادة تعيد 1 إذا كانت مسافة 4-gram بين السلسلتين أقل من العتبة أو تساويها (1.0 افتراضيًا)، وإلا فتعيد 0. UInt8 أمثلة البحث باستخدام 4-grams
Query
SELECT ngramSearch('ClickHouse', 'Click')
Response
┌─ngramSearch('ClickHouse', 'Click')─┐
│                                  1 │
└────────────────────────────────────┘

ngramSearchCaseInsensitive

أُضيفت في: v20.1.0 توفّر متغيّرًا غير حساس لحالة الأحرف من ngramSearch. تحسب الفرق غير المتماثل بين سلسلة needle وسلسلة haystack، أي عدد مقاطع n-gram في needle مطروحًا منه العدد المشترك من مقاطع n-gram، ثم يُطبَّع على عدد مقاطع n-gram في needle. تتحقق مما إذا كانت مسافة 4-gram بين سلسلتين أقل من أو تساوي threshold محددة، مع تجاهل حالة الأحرف. البنية
ngramSearchCaseInsensitive(haystack, needle)
الوسائط
  • haystack — سلسلة نصية للمقارنة. String
  • needle — سلسلة نصية للمقارنة. String
القيمة المُعادة تعيد 1 إذا كانت مسافة 4-gram بين السلسلتين أقل من العتبة أو تساويها (1.0 افتراضيًا)، وإلا فتعيد 0. UInt8 أمثلة بحث غير حساس لحالة الأحرف باستخدام 4-grams
Query
SELECT ngramSearchCaseInsensitive('Hello World','hello')
Response
┌─ngramSearchCaseInsensitive('Hello World','hello')─┐
│                                                  1 │
└────────────────────────────────────────────────────┘

ngramSearchCaseInsensitiveUTF8

قُدِّم في: v20.1.0 يوفّر إصدارًا من ngramSearch يعمل على UTF-8 دون تمييز بين الأحرف الكبيرة والصغيرة. يفترض أن haystack وneedle سلسلتان نصيتان بترميز UTF-8، ويتجاهل الفرق بين الأحرف الكبيرة والصغيرة. يتحقق مما إذا كانت مسافة 3-gram بين سلسلتين نصيتين بترميز UTF-8 أقل من أو تساوي عتبة محددة، دون تمييز بين الأحرف الكبيرة والصغيرة. الصيغة
ngramSearchCaseInsensitiveUTF8(haystack, needle)
الوسيطات
  • haystack — سلسلة بترميز UTF-8 للمقارنة. String
  • needle — سلسلة بترميز UTF-8 للمقارنة. String
القيمة المُعادة يعيد 1 إذا كانت مسافة 3-gram بين السلسلتين أقل من العتبة أو تساويها (1.0 افتراضيًا)، وإلا فيعيد 0. UInt8 أمثلة بحث UTF-8 غير حساس لحالة الأحرف باستخدام 3-grams
Query
SELECT ngramSearchCaseInsensitiveUTF8('абвГДЕёжз', 'АбвгдЕЁжз')
Response
┌─ngramSearchCaseInsensitiveUTF8('абвГДЕёжз', 'АбвгдЕЁжз')─┐
│                                                        1 │
└──────────────────────────────────────────────────────────┘

ngramSearchUTF8

قُدِّمت في: v20.1.0 توفّر إصدارًا بترميز UTF-8 من ngramSearch. تفترض أن haystack وneedle سلسلتان نصيتان بترميز UTF-8. يتحقق مما إذا كانت مسافة 3-gram بين سلسلتين نصيتين بترميز UTF-8 أقل من أو تساوي عتبة محددة. البنية
ngramSearchUTF8(haystack, needle)
الوسائط
  • haystack — سلسلة بترميز UTF-8 للمقارنة. سلسلة
  • needle — سلسلة بترميز UTF-8 للمقارنة. سلسلة
القيمة المُعادة يُرجع 1 إذا كانت مسافة 3-gram بين السلسلتين أقل من العتبة أو تساويها (1.0 افتراضيًا)، وإلا فيُرجع 0. UInt8 أمثلة البحث في UTF-8 باستخدام 3-grams
Query
SELECT ngramSearchUTF8('абвгдеёжз', 'гдеёзд')
Response
┌─ngramSearchUTF8('абвгдеёжз', 'гдеёзд')─┐
│                                      1 │
└────────────────────────────────────────┘

notILike

أُتيح في: v20.6.0 يتحقق مما إذا كانت السلسلة النصية لا تطابق نمطًا، مع تجاهل حالة الأحرف. يمكن أن يحتوي النمط على المحرفين الخاصين % و _ لمطابقة SQL LIKE. ويدعم عبارة ESCAPE الاختيارية (راجع like). البنية
notILike(haystack, pattern[, escape_character])
-- haystack NOT ILIKE pattern [ESCAPE 'escape_character']
الوسيطات
  • haystack — سلسلة الإدخال المراد البحث فيها. String أو FixedString
  • pattern — نمط SQL LIKE المراد مطابقته. يطابق % أي عدد من المحارف (بما في ذلك الصفر)، ويطابق _ محرفًا واحدًا فقط. String
  • escape_character — سلسلة اختيارية من محرف واحد تُستخدَم كمحرف هروب بدلًا من \. القيمة الافتراضية: \. String
القيمة المُعادة تعيد 1 إذا كانت السلسلة لا تطابق النمط (من دون حساسية لحالة الأحرف)، وإلا فتعيد 0. UInt8 أمثلة مثال على الاستخدام
Query
SELECT notILike('ClickHouse', '%house%');
Response
┌─notILike('Cl⋯ '%house%')─┐
│                        0 │
└──────────────────────────┘

notLike

أُضيف في: v1.1.0 مماثلة لـ like، لكنها تنفي النتيجة. وتدعم بند ESCAPE الاختياري (راجع like). الصيغة
notLike(haystack, pattern[, escape_character])
-- haystack NOT LIKE pattern [ESCAPE 'escape_character']
الوسيطات
  • haystack — السلسلة التي يُجرى فيها البحث. String أو FixedString
  • pattern — نمط LIKE المراد مطابقته. String
  • escape_character — سلسلة اختيارية مكوّنة من محرف واحد تُستخدم كمحرف هروب بدلًا من \. القيمة الافتراضية: \. String
القيمة المعادة تُرجع 1 إذا كانت السلسلة لا تطابق نمط LIKE، وإلا فتُرجع 0. UInt8 أمثلة مثال على الاستخدام
Query
SELECT notLike('ClickHouse', '%House%');
Response
┌─notLike('Cli⋯ '%House%')─┐
│                        0 │
└──────────────────────────┘
نمط غير متطابق
Query
SELECT notLike('ClickHouse', '%SQL%');
Response
┌─notLike('Cli⋯', '%SQL%')─┐
│                        1 │
└──────────────────────────┘

position

أُضيف في: v1.1.0 يعيد موضع السلسلة الفرعية needle داخل السلسلة haystack (بالبايتات، بدءًا من 1). إذا كانت السلسلة الفرعية needle فارغة، فتُطبَّق القواعد التالية:
  • إذا لم يتم تحديد start_pos: فأعد 1
  • إذا كان start_pos = 0: فأعد 1
  • إذا كان start_pos >= 1 وstart_pos <= length(haystack) + 1: فأعد start_pos
  • بخلاف ذلك: فأعد 0
تنطبق القواعد نفسها أيضًا على الدوال locate، وpositionCaseInsensitive، وpositionUTF8، وpositionCaseInsensitiveUTF8. الصيغة
position(haystack, needle[, start_pos])
الوسيطات
  • haystack — السلسلة التي يُجرى البحث فيها. String أو Enum
  • needle — السلسلة الفرعية المراد البحث عنها. String
  • start_pos — الموضع في haystack الذي يبدأ منه البحث (بترقيم يبدأ من 1). اختياري. UInt
القيمة المعادة يعيد موضع البداية بالبايت، مع العد بدءًا من 1، إذا عُثر على السلسلة الفرعية، وإلا فتكون القيمة 0 إذا لم يُعثر عليها. UInt64 أمثلة الاستخدام الأساسي
Query
SELECT position('Hello, world!', '!')
Response
┌─position('Hello, world!', '!')─┐
│                             13 │
└────────────────────────────────┘
مع الوسيطة start_pos
Query
SELECT position('Hello, world!', 'o', 1), position('Hello, world!', 'o', 7)
Response
┌─position('Hello, world!', 'o', 1)─┬─position('Hello, world!', 'o', 7)─┐
│                                 5 │                                 9 │
└───────────────────────────────────┴───────────────────────────────────┘
صيغة needle IN haystack
Query
SELECT 6 = position('/' IN s) FROM (SELECT 'Hello/World' AS s)
Response
┌─equals(6, position(s, '/'))─┐
│                           1 │
└─────────────────────────────┘
سلسلة فرعية لعبارة البحث الفارغة
Query
SELECT position('abc', ''), position('abc', '', 0), position('abc', '', 1), position('abc', '', 2), position('abc', '', 3), position('abc', '', 4), position('abc', '', 5)
Response
┌─position('abc', '')─┬─position('abc', '', 0)─┬─position('abc', '', 1)─┬─position('abc', '', 2)─┬─position('abc', '', 3)─┬─position('abc', '', 4)─┬─position('abc', '', 5)─┐
│                   1 │                      1 │                      1 │                      2 │                      3 │                      4 │                      0 │
└─────────────────────┴────────────────────────┴────────────────────────┴────────────────────────┴────────────────────────┴────────────────────────┴────────────────────────┘

positionCaseInsensitive

أُضيف في: v1.1.0 مثل position، لكنه غير حساس لحالة الأحرف. الصيغة
positionCaseInsensitive(haystack, needle[, start_pos])
الأسماء المستعارة: instr الوسيطات
  • haystack — السلسلة التي يُجرى البحث فيها. String أو Enum
  • needle — السلسلة الفرعية المطلوب البحث عنها. String
  • start_pos — اختياري. الموضع (مع احتساب المواضع بدءًا من 1) في haystack الذي يبدأ منه البحث. UInt*
القيمة المُعادة تعيد موضع البداية بالبايتات، مع احتساب المواضع بدءًا من 1، إذا عُثر على السلسلة الفرعية، وإلا فتعيد 0. UInt64 أمثلة بحث غير حساس لحالة الأحرف
Query
SELECT positionCaseInsensitive('Hello, world!', 'hello')
Response
┌─positionCaseInsensitive('Hello, world!', 'hello')─┐
│                                                 1 │
└───────────────────────────────────────────────────┘

positionCaseInsensitiveUTF8

أُضيفت في: v1.1.0 مثل positionUTF8، لكنها تبحث مع تجاهل حالة الأحرف. الصيغة
positionCaseInsensitiveUTF8(haystack, needle[, start_pos])
المعاملات
  • haystack — السلسلة التي يُجرى البحث فيها. String أو Enum
  • needle — السلسلة الفرعية المراد البحث عنها. String
  • start_pos — اختياري. الموضع في haystack الذي يبدأ منه البحث (مع احتساب الموضع الأول على أنه 1). UInt*
القيمة المُعادة تعيد موضع البداية بالبايتات مع العد ابتداءً من 1 إذا عُثر على السلسلة الفرعية، وإلا فتعيد 0 إذا لم يُعثر عليها. UInt64 أمثلة بحث UTF-8 غير حساس لحالة الأحرف
Query
SELECT positionCaseInsensitiveUTF8('Привет мир', 'МИР')
Response
┌─positionCaseInsensitiveUTF8('Привет мир', 'МИР')─┐
│                                                8 │
└──────────────────────────────────────────────────┘

positionUTF8

أُضيف في: v1.1.0 يشبه position، لكنه يفترض أن haystack وneedle سلسلتان نصيتان مرمّزتان بترميز UTF-8. الصيغة
positionUTF8(haystack, needle[, start_pos])
الوسيطات
  • haystack — السلسلة التي يُجرى البحث فيها. String أو Enum
  • needle — السلسلة الفرعية المراد البحث عنها. String
  • start_pos — اختياري. الموضع في haystack الذي يبدأ منه البحث (مع بدء العد من 1). UInt*
القيمة المُعادة يُرجع موضع البداية بالبايتات مع احتساب المواضع ابتداءً من 1 إذا عُثر على السلسلة الفرعية، وإلا فستكون القيمة 0 إذا لم يُعثر عليها. UInt64 أمثلة عدّ محارف UTF-8
Query
SELECT positionUTF8('Motörhead', 'r')
Response
┌─position('Motörhead', 'r')─┐
│                          5 │
└────────────────────────────┘
آخر تعديل في ٢٥ يونيو ٢٠٢٦