يتبع البحث غير الحساس لحالة الأحرف قواعد التحويل بين الأحرف الصغيرة والكبيرة في اللغة الإنجليزية. فعلى سبيل المثال، يكون الحرف الكبير لـ
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;
UInt64
أمثلة
عدّ تسلسلات الأرقام
Query
Response
countMatchesCaseInsensitive
استُحدث في: v21.1.0 مشابه لـcountMatches، لكنه يُجري مطابقة تتجاهل حالة الأحرف.
البنية
haystack— السلسلة النصية المراد البحث فيها.Stringpattern— نمط تعبير نمطي.const String
UInt64
أمثلة
العدّ دون تمييز بين الأحرف الكبيرة والصغيرة
Query
Response
countSubstrings
أُضيف في: v21.1.0 يُرجع عدد مرات ظهور السلسلة الفرعيةneedle ضمن السلسلة haystack.
البنية
haystack— السلسلة التي يُجرى البحث فيها. String أو Enum. -needle— السلسلة الفرعية المطلوب البحث عنها. String. -start_pos— الموضع (بدءًا من 1) فيhaystackالذي يبدأ منه البحث. UInt. اختياري.
UInt64
أمثلة
مثال على الاستخدام
Query
Response
Query
Response
countSubstringsCaseInsensitive
قُدِّمت في: v21.1.0 مثلcountSubstrings، لكنه يحسب بغض النظر عن حالة الأحرف.
الصياغة
haystack— السلسلة التي يُجرى فيها البحث.StringأوEnumneedle— السلسلة الفرعية المطلوب البحث عنها.Stringstart_pos— اختياري. الموضع (بدءًا من 1) فيhaystackالذي يبدأ منه البحث.UInt*
needle في haystack. UInt64
أمثلة
مثال على الاستخدام
Query
Response
Query
Response
countSubstringsCaseInsensitiveUTF8
أُضيفت في: v21.1.0 مشابهة لـcountSubstrings، لكنها تحسب بدون حساسية لحالة الأحرف، وتفترض أن haystack عبارة عن سلسلة UTF-8.
الصيغة
haystack— سلسلة UTF-8 يُجرى البحث فيها.StringأوEnumneedle— سلسلة فرعية يُبحث عنها.Stringstart_pos— اختياري. الموضع (ابتداءً من 1) فيhaystackالذي يبدأ منه البحث.UInt*
needle في haystack. UInt64
أمثلة
مثال على الاستخدام
Query
Response
Query
Response
extract
متوفر منذ: v1.1.0 يستخرج أول تطابق لتعبير نمطي في سلسلة نصية. إذا لم يطابق ‘haystack’ ‘pattern’، فستُعاد سلسلة فارغة. تستخدم هذه الدالة مكتبة RE2 للتعبيرات النمطية. يُرجى الرجوع إلى re2 للاطلاع على البنية المدعومة. إذا كان التعبير النمطي يحتوي على مجموعات ملتقطة (أنماطًا فرعية)، فستطابق الدالة سلسلة الإدخال مع أول مجموعة ملتقطة. البنيةhaystack— السلسلة المراد الاستخراج منها.Stringpattern— تعبير نمطي، يحتوي عادةً على مجموعة التقاط.const String
String
أمثلة
استخراج النطاق من البريد الإلكتروني
Query
Response
Query
Response
extractAll
أُضيفت في: v1.1.0 مثلextract، لكنها تُرجِع مصفوفة تضم جميع مطابقات التعبير النمطي في سلسلة نصية.
إذا لم يطابق ‘haystack’ التعبير النمطي ‘pattern’، فستُرجَع مصفوفة فارغة.
إذا كان التعبير النمطي يحتوي على مجموعات ملتقطة (أنماط فرعية)، فستُطابِق الدالة سلسلة الإدخال مع أول مجموعة ملتقطة.
البنية
haystack— السلسلة التي تُستخرج منها المقاطع.Stringpattern— تعبير نمطي، وقد يتضمن اختياريًا مجموعات التقاط.const String
Array(String)
أمثلة
استخراج جميع الأرقام
Query
Response
Query
Response
extractAllGroupsHorizontal
أُضيفت في: v20.5.0 تطابق جميع مجموعات السلسلة النصية باستخدام التعبير النمطي الموفَّر، وتُرجع مصفوفة من المصفوفات، بحيث تحتوي كل مصفوفة على جميع القيم الملتقطة من المجموعة الملتقِطة نفسها، مرتبة حسب رقم المجموعة. البنيةs—سلسلة الإدخالالمطلوب الاستخراج منها.StringأوFixedStringregexp—تعبير نمطيلإجراء المطابقة.const Stringأوconst FixedString
مصفوفة من المصفوفات، حيث تحتوي كل مصفوفة داخلية على جميع القيم الملتقطة من مجموعة ملتقطة واحدة عبر كل المطابقات. تحتوي المصفوفة الداخلية الأولى على جميع القيم الملتقطة من المجموعة 1، والثانية من المجموعة 2، وهكذا. وإذا لم يتم العثور على أي مطابقات، فستُعاد مصفوفة فارغة. Array(Array(String))
أمثلة
مثال على الاستخدام
Query
Response
extractGroups
أُضيفت في: v20.5.0 يستخرج مجموعات الالتقاط من أول سلسلة فرعية يطابقها تعبير نمطي. ولاستخراج المجموعات من جميع المطابقات، استخدمextractAllGroupsHorizontal أو extractAllGroupsVertical.
الصيغة
s— سلسلة الإدخال المطلوب الاستخراج منها.StringأوFixedStringregexp— تعبير نمطي. يجب أن يحتوي على مجموعة ملتقطة واحدة على الأقل. ثابت.const Stringأوconst FixedString
1 إلى N، حيث إن N هو عدد المجموعات الملتقطة في regexp) لأول تطابق. وإذا لم يوجد تطابق، فستُعاد مصفوفة فارغة. Array(String)
أمثلة
مثال على الاستخدام
Query
Response
hasAllTokens
أُضيف في: v25.10.0 مثلhasAnyTokens، لكنه يُرجِع 1 إذا كانت جميع الرموز في السلسلة أو المصفوفة needle تطابق السلسلة input، ويُرجِع 0 خلاف ذلك. إذا كان input عمودًا، فإنه يُرجِع جميع الصفوف التي تستوفي هذا الشرط.
يجب أن يكون للعمود
input فهرس نصي معرّف لضمان أفضل أداء.
إذا لم يكن هناك فهرس نصي معرّف، فستُجري الدالة مسحًا كاملًا للعمود بالقوة الغاشمة، وهو أبطأ بكثير من البحث باستخدام فهرس.- الوسيط
input(دائمًا)، و - الوسيط
needle(إذا أُعطي على هيئة String) باستخدام مُجزِّئ الرموز المحدد للفهرس النصي. إذا لم يكن للعمود فهرس نصي معرّف، فسيُستخدم بدلًا منه مُجزِّئ الرموزsplitByNonAlpha. إذا كان الوسيطneedleمن النوع Array(String)، فسيُعامل كل عنصر في المصفوفة على أنه رمز — ولا تُجرى أي عملية إضافية لتجزئته إلى رموز. إذا كان الفهرس النصي يحتوي على تعبير معالج مسبق مُعدّ، فسيُطبَّق المعالج المسبق علىneedle(إذا أُعطي كـString) قبل تجزئته إلى رموز. إذا كان الفهرس النصي يحتوي على تعبير معالج لاحق مُعدّ، فسيُطبَّق المعالج اللاحق على رموزneedleورموزinput(أي على كليهما بعد التجزئة إلى رموز).
عندما يعرّف الفهرس النصي معالجًا مسبقًا (على سبيل المثال
lowerUTF8)، فإن hasAllTokens يطبّقه على input، وعندما تكون needles من نوع String، يطبّقه أيضًا على needles قبل تجزئتها إلى رموز. وعندما تكون needles من نوع Array(String)، فتمرَّر عناصرها كما هي ولا يُطبَّق عليها المعالج المسبق.
لا يُطبَّق المعالج المسبق إلا على مسار الفهرس النصي، لذلك قد تختلف النتائج بين الاستعلامات التي تستخدم الفهرس النصي والاستعلامات التي لا تستخدمه (مثل SETTINGS use_skip_indexes = 0).
يُتسامح مع هذا التباين لتحسين سهولة استخدام البحث بالنص الكامل.hasAllToken
الوسائط
input— عمود الإدخال.StringأوFixedStringأوNullable(String)أوNullable(FixedString)أوArray(String)أوArray(FixedString)أوArray(Nullable(String))أوArray(Nullable(FixedString))needles— الرموز المراد البحث عنها.StringأوArray(String)tokenizer— مُجزِّئ الرموز المميزّة المراد استخدامه. الوسيطات الصالحة هيsplitByNonAlphaوsplitByStringوsplitByRegexpوasciiCJKوchineseوicu('<locale>')وjapaneseوngramsوsparseGramsوarray. وهو اختياري، وإذا لم يُحدَّد صراحةً، فستكون القيمة الافتراضيةsplitByNonAlpha.const String
UInt8
أمثلة
استخدام أساسي مع سلسلة البحث
Query
Response
Query
Response
tokens
Query
Response
Query
Response
Query
Query
Response
Query
Response
Query
Response
hasAnyTokens
أُضيف في: v25.10.0 يعيد 1 إذا طابق رمز واحد على الأقل في السلسلة أو المصفوفةneedle السلسلة input، ويعيد 0 خلاف ذلك. وإذا كانت input عمودًا، فإنه يعيد جميع الصفوف التي تستوفي هذا الشرط.
يجب تعريف فهرس نصي على العمود
input لتحقيق أفضل أداء.
وإذا لم يكن هناك فهرس نصي معرّف، فستُجري الدالة مسحًا كاملًا للعمود بالقوة الغاشمة، وهو أبطأ بعدة مراتب من البحث عبر الفهرس.- الوسيط
input(دائمًا)، و - الوسيط
needle(إذا أُعطي على هيئة String) باستخدام مُقسِّم الرموز المحدد للفهرس النصي. وإذا لم يكن للعمود فهرس نصي معرّف، فسيُستخدم بدلًا من ذلك مُقسِّم الرموزsplitByNonAlpha. وإذا كان الوسيطneedleمن النوع Array(String)، فسيُعامل كل عنصر في المصفوفة على أنه رمز — ولا يحدث أي تجزئة إضافية إلى رموز. وإذا كان الفهرس النصي مهيأً بتعبير معالج مسبق، فسيُطبَّق المعالج المسبق علىneedle(إذا أُعطي على هيئةString) قبل التجزئة إلى رموز. وإذا كان الفهرس النصي مهيأً بتعبير معالج لاحق، فسيُطبَّق المعالج اللاحق على رموزneedleورموزinput(أي على كليهما بعد التجزئة إلى رموز).
عندما يعرّف الفهرس النصي معالجًا مسبقًا (على سبيل المثال
lowerUTF8)، فإن hasAnyTokens تطبّقه على input، وعندما تكون needles من النوع String، على needles قبل التجزئة إلى رموز. وعندما تكون needles من النوع Array(String)، تمر عناصرها كما هي ولا يُطبَّق عليها المعالج المسبق.
لا يُطبَّق المعالج المسبق إلا في مسار الفهرس النصي، لذا قد تختلف النتائج بين الاستعلامات التي تستخدم الفهرس النصي والاستعلامات التي لا تستخدمه (مثل SETTINGS use_skip_indexes = 0).
ويُتسامح مع هذا التباين لتحسين سهولة استخدام البحث بالنص الكامل.hasAnyToken
الوسيطات
input— عمود الإدخال.StringأوFixedStringأوNullable(String)أوNullable(FixedString)أوArray(String)أوArray(FixedString)أوArray(Nullable(String))أوArray(Nullable(FixedString))needles— الرموز المراد البحث عنها.StringأوArray(String)tokenizer— مُقسِّم الرموز المستخدم. الوسيطات الصالحة هيsplitByNonAlphaوsplitByStringوsplitByRegexpوasciiCJKوchineseوicu('<locale>')وjapaneseوngramsوsparseGramsوarray. هذا الوسيط اختياري، وإذا لم يُحدَّد صراحةً، تكون القيمة الافتراضيةsplitByNonAlpha.const String
1 إذا وُجدت مطابقة واحدة على الأقل، وإلا فتُرجِع 0. UInt8
أمثلة
الاستخدام الأساسي مع نمط بحث نصي
Query
Response
Query
Response
tokens
Query
Response
Query
Query
Response
Query
Response
Query
Response
hasPhrase
أُضيف في: v26.4.0 يتحقق مما إذا كانinput يحتوي على جميع الرموز من phrase بترتيب متتالٍ.
يجب أن يكون للعمود
input فهرس نصي مُعرّف للحصول على أفضل أداء.
إذا لم يكن هناك فهرس نصي مُعرّف، فستُجري الدالة مسحًا كاملًا للعمود بالقوة الغاشمة، وهو أبطأ بعدة مراتب من البحث عبر الفهرس.input وphrase إلى رموز باستخدام مُقسِّم الرموز المحدد للفهرس النصي.
إذا لم يكن للعمود فهرس نصي مُعرّف، فسيُستخدم بدلًا من ذلك مُقسِّم الرموز splitByNonAlpha — ما لم يتم تمرير مُقسِّم رموز باعتباره الوسيط الثالث الاختياري.
يجب أن يكون وسيط مُقسِّم الرموز واحدًا من splitByNonAlpha أو splitByString أو splitByRegexp أو ngrams أو asciiCJK أو icu.
لاحظ أن splitByRegexp غير مدعوم لـ hasPhrase عندما يعرّف الفهرس النصي أيضًا معالجًا لاحقًا.
عندما يعرّف الفهرس النصي معالجًا مسبقًا (على سبيل المثال
lowerUTF8)، تطبّقه hasPhrase على كلٍّ من input وphrase قبل تجزئتهما إلى رموز.
لا يُطبَّق المعالج المسبق إلا في مسار الفهرس النصي، لذلك قد تختلف النتائج بين الاستعلامات التي تستخدم الفهرس النصي والاستعلامات التي لا تستخدمه (مثل SETTINGS use_skip_indexes = 0).
يُتسامح مع هذا التباين لتحسين سهولة استخدام البحث بالنص الكامل.hasToken وhasAnyTokens وhasAllTokens، تتطلب hasPhrase أن تظهر الرموز بالترتيب نفسه
ومن دون أي رموز فاصلة بينها. على سبيل المثال، تُرجع hasPhrase('the quick brown fox', 'quick fox') القيمة 0
لأن “brown” تظهر بين “quick” و”fox”.
البنية
matchPhrase
وسيطات الدالة
input— عمود الإدخال.StringأوFixedStringphrase— العبارة المراد البحث عنها.const Stringtokenizer— مُقسِّم الرموز المراد استخدامها. اختياري، والقيمة الافتراضية هيsplitByNonAlpha.const String
1 إذا عُثر على العبارة كتسلسل متتالٍ من الرموز، وإلا فتُرجع 0. UInt8
أمثلة
مطابقة العبارة
Query
Response
Query
Response
hasSubsequence
أُضيف في الإصدار: v23.7.0 يتحقق مما إذا كان needle تسلسلاً فرعيًا من haystack. التسلسل الفرعي لسلسلة نصية هو تسلسل يمكن اشتقاقه من سلسلة أخرى بحذف بعض المحارف أو دون حذف أي محرف، من دون تغيير ترتيب المحارف المتبقية. الصياغةhaystack— السلسلة التي يُبحث فيها عن التسلسل الفرعي.Stringneedle— التسلسل الفرعي المطلوب البحث عنه.String
1 إذا كان needle تسلسلاً فرعياً من haystack، وإلا فيعيد 0. UInt8
أمثلة
فحص أساسي لتسلسل فرعي
Query
Response
Query
Response
hasSubsequenceCaseInsensitive
استُحدثت في: v23.7.0 مثلhasSubsequence، لكنه يبحث مع تجاهل حالة الأحرف.
الصياغة
haystack— السلسلة النصية التي يُجرى البحث ضمنها.Stringneedle— المتتالية الجزئية المراد البحث عنها.String
needle متتالية جزئية من haystack، وإلا فتُرجع 0. UInt8
أمثلة
مثال على الاستخدام
Query
Response
hasSubsequenceCaseInsensitiveUTF8
أُضيف في: v23.7.0 مثلhasSubsequenceUTF8، لكنه يبحث دون التفريق بين الأحرف الكبيرة والصغيرة.
الصياغة
haystack— سلسلة مرمّزة بـ UTF8 يُجرى البحث فيها.Stringneedle— سلسلة تسلسل فرعي مرمّزة بـ UTF8 يُبحث عنها.String
needle تسلسلاً فرعيًا من haystack، وإلا فتُرجِع 0. UInt8
أمثلة
مثال على الاستخدام
Query
Response
hasSubsequenceUTF8
قُدِّمت في: v23.7.0 تشبهhasSubsequence، لكنها تفترض أن haystack و needle سلسلتان نصيتان مرمَّزتان بترميز UTF-8.
البنية
1 إذا كان needle تسلسلاً فرعيًا من haystack، وإلا فتُرجع 0. UInt8
أمثلة
مثال على الاستخدام
Query
Response
Query
Response
hasToken
أُضيف في: v20.1.0تنطوي
hasToken على بعض المزالق عند استخدامها في عمليات البحث ضمن فهارس النصوص مع مُقسِّمات رموز غير splitByNonAlpha و/أو مع تعبيرات المعالج التمهيدي/المعالج اللاحق.
نوصي باستخدام hasAnyTokens وhasAllTokens بدلًا منها.token المُعطى موجودًا في النص المراد البحث فيه.
يستخدم splitByNonAlpha كمُجزِّئ للرموز، أي إن token يُعرَّف بأنه أطول تتابع فرعي ممكن من المحارف المتتالية [0-9A-Za-z_] (الأرقام، ومحارف ASCII، والشرطة السفلية).
صياغة
haystack— السلسلة النصية المطلوب البحث فيها.Stringtoken— الرمز المطلوب البحث عنه.const String
1 إذا عُثر على الرمز، و0 خلاف ذلك. UInt8
أمثلة
البحث عن رمز
Query
Response
hasTokenCaseInsensitive
قُدِّمت في: v20.1.0 ينفّذ بحثًا غير حساس لحالة الأحرف عنneedle داخل haystack باستخدام الفهرس tokenbf_v1.
لهذه الدالة بعض الإشكالات مع مُقسِّمات الرموز غير الافتراضية وتعبيرات المعالجة المسبقة أو اللاحقة.
نوصي باستخدام
hasAnyTokens وhasAllTokens بدلًا من ذلك.- لا شيء.
hasTokenCaseInsensitiveOrNull
أُضيفت في: v23.1.0 تُجري بحثًا عن needle داخل haystack غير حساس لحالة الأحرف باستخدام فهرس tokenbf_v1. وتُرجع NULL إذا كان needle غير صحيح التكوين.لهذه الدالة بعض المحاذير عند استخدامها مع مُقسِّمات الرموز غير الافتراضية أو تعبيرات المعالج التمهيدي أو المعالج اللاحق.
نوصي باستخدام
hasAnyTokens وhasAllTokens بدلًا من ذلك.- لا شيء.
hasTokenOrNull
قُدِّم في: v20.1.0 مثلhasToken، لكنه يُرجع NULL إذا كان الرمز غير مُشكَّل على نحو صحيح.
الصيغة
haystack— السلسلة المراد البحث فيها. يجب أن تكون ثابتة.Stringtoken— الرمز المراد البحث عنه.const String
1 إذا عُثر على الرمز، و0 خلاف ذلك، وNULL إذا كان الرمز غير صحيح التكوين. Nullable(UInt8)
أمثلة
مثال على الاستخدام
Query
Response
highlight
أُضيفت في: v26.4.0 تُبرز مواضع ظهور مصطلحات البحث في سلسلة نصية عبر إحاطتها بوسوم HTML. تُجري الدالة مطابقة ASCII غير حساسة لحالة الأحرف. وإذا تداخلت عدة مصطلحات بحث أو كانت متجاورة في النص، فتُدمج الأجزاء المطابَقة في مقطع مميّز واحد. الصياغةhaystack— النص المراد البحث فيه.StringأوFixedStringneedles— مصفوفة من عبارات البحث المراد إبرازها.const Array(String)open_tag— وسم الفتح الذي يُدرج قبل كل تطابق. القيمة الافتراضية:<em>.const Stringclose_tag— وسم الإغلاق الذي يُدرج بعد كل تطابق. القيمة الافتراضية:</em>.const String
String
أمثلة
إبراز أساسي
Query
Response
Query
Response
ilike
قُدِّم في: v20.6.0 مثلlike، لكنه يبحث بدون مراعاة حالة الأحرف. ويدعم عبارة ESCAPE الاختيارية (راجع like).
البنية
haystack— السلسلة النصية التي يُجرى فيها البحث.StringأوFixedStringpattern— نمط LIKE المطلوب مطابقته.Stringescape_character— سلسلة اختيارية مكوّنة من محرف واحد تُستخدم كمحرف هروب بدلًا من\. الافتراضي:\.String
1 إذا كانت السلسلة تطابق نمط LIKE (غير حساس لحالة الأحرف)، وإلا تُعيد 0. UInt8
أمثلة
مثال على الاستخدام
Query
Response
like
أُضيف في: v1.1.0 تُرجع ما إذا كانت السلسلةhaystack تطابق تعبير LIKE pattern.
يمكن أن يحتوي تعبير LIKE على أحرف عادية والرموز الوصفية التالية:
- يشير
%إلى أي عدد من الأحرف كيفما كانت (بما في ذلك عدم وجود أي أحرف). - يشير
_إلى حرف واحد كيفما كان. - تُستخدم
\لإفلات القيم الحرفية%و_و\.
_ نقطة الترميز Unicode ¥، التي تُمثَّل في UTF-8 باستخدام بايتين.
إذا لم تكن haystack أو تعبير LIKE صالحَين وفق UTF-8، فسيكون السلوك غير معرّف.
لا يُجرى أي تطبيع Unicode تلقائيًا، ويمكنك استخدام الدوال normalizeUTF8* لهذا الغرض.
للمطابقة مع % و_ و\ الحرفية (وهي محارف وصفية في LIKE)، أضف قبلها شرطة مائلة عكسية: \% و\_ و\\.
وتفقد الشرطة المائلة العكسية معناها الخاص (أي تُفسَّر حرفيًا) إذا سبقت حرفًا غير % أو _ أو \.
يتطلب ClickHouse أيضًا تهريب الشرطات المائلة العكسية داخل السلاسل كما هو موضح هنا، لذا ستحتاج فعليًا إلى كتابة
\\% و\\_ و\\\\.LIKE من الشكل %needle%، تكون الدالة بالسرعة نفسها التي تتمتع بها الدالة position.
أما جميع تعابير LIKE الأخرى فتُحوَّل داخليًا إلى تعبير نمطي وتُنفَّذ بأداء مماثل للدالة match.
عبارة ESCAPE
تحدّد عبارةESCAPE الاختيارية محرف هروب مخصّصًا (ويجب أن يكون محرف ASCII واحدًا).
عند تحديده، يستبدل محرف الهروب المخصّص الشرطة المائلة العكسية الافتراضية عند التعامل مع المحرفين الخاصين % و _.
يمكن لمحرف الهروب أن يُستخدم مع ثلاثة أشياء: % (علامة نسبة مئوية حرفية)، و_ (شرطة سفلية حرفية)، ونفسه (محرف هروب حرفي).
عند استخدام محرف هروب مخصّص، لا يعود للشرطة المائلة العكسية أي معنى خاص، وتُعامَل على أنها محرف حرفي.
البنية
haystack— السلسلة النصية التي يُجرى فيها البحث.StringأوFixedStringpattern— نمطLIKEالمستخدم للمطابقة. يمكن أن يحتوي على%(يطابق أي عدد من المحارف)، و_(يطابق محرفًا واحدًا)، و\كحرف هروب.Stringescape_character— سلسلة نصية اختيارية مكوّنة من محرف واحد تُستخدم كحرف هروب بدلًا من\. القيمة الافتراضية:\.String
1 إذا كانت السلسلة النصية تطابق نمط LIKE، وإلا فتُعيد 0. UInt8
أمثلة
مثال على الاستخدام
Query
Response
Query
Response
Query
Response
Query
Response
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.
needle— السلسلة الفرعية المطلوب البحث عنها.Stringhaystack— السلسلة التي يُجرى فيها البحث.StringأوEnumstart_pos— اختياري. الموضع فيhaystackالذي يبدأ منه البحث (مع بدء العد من 1).UInt
0 إذا لم يُعثر عليها. UInt64
أمثلة
الاستخدام الأساسي
Query
Response
match
أُضيف في: v1.1.0 يتحقق مما إذا كانت السلسلة النصية المُدخلة تطابق نمط التعبير النمطي المُعطى. تستخدم هذه الدالة مكتبة RE2 للتعبيرات النمطية. يُرجى الرجوع إلى re2 للاطلاع على الصياغة المدعومة. تعمل المطابقة على افتراض UTF-8. فعلى سبيل المثال، يُستخدَم¥ داخليًا على هيئة بايتين، لكن المطابقة تتعامل معه باعتباره نقطة ترميز واحدة.
يجب ألا يحتوي التعبير النمطي على بايتات NULL.
إذا لم تكن السلسلة النصية المُدخلَة أو النمط بتنسيق UTF-8 صالحين، فسيكون السلوك غير معرّف.
وعلى خلاف السلوك الافتراضي في re2، فإن . يطابق فواصل الأسطر. لتعطيل ذلك، أضف (?-s) في بداية النمط.
النمط غير مقيَّد. ولمطابقة السلسلة النصية بالكامل، قيِّد النمط بنفسك باستخدام ^ و $.
إذا كنت تريد فقط البحث عن سلاسل فرعية، فيمكنك استخدام الدالتين like أو position بدلًا من ذلك، إذ تعملان أسرع بكثير من هذه الدالة.
صياغة عامل التشغيل البديلة: haystack REGEXP pattern أو haystack ~ pattern (بنمط PostgreSQL).
الصياغة
REGEXP_MATCHES
الوسيطات
haystack— سلسلة يُبحث فيها عن النمط.Stringpattern— نمط تعبير نمطي. يمكن أن يكون ثابتًا أو أن يأتي من عمود.String
1 إذا كان هناك تطابق مع النمط، و0 خلاف ذلك. UInt8
أمثلة
مطابقة الأنماط الأساسية
Query
Response
Query
Response
Query
Response
matchCaseInsensitive
أُضيف في: v26.8.0 تشبهmatch لكنها تطابق دون مراعاة حالة الأحرف.
تستخدم هذه الدالة مكتبة RE2 للتعبيرات النمطية. يُرجى الرجوع إلى re2 للاطلاع على الصياغة المدعومة.
صياغة عامل التشغيل البديلة: haystack ~* pattern (بنمط PostgreSQL).
الصياغة
haystack— سلسلة يُبحث فيها عن النمط.Stringpattern— نمط تعبير نمطي. يمكن أن يكون ثابتًا أو أن يأتي من عمود.String
1 إذا كان هناك تطابق مع النمط دون تمييز بين حالة الأحرف، و0 خلاف ذلك. UInt8
أمثلة
مثال على الاستخدام
Query
Response
multiFuzzyMatchAllIndices
أُضيف في: v20.1.0 يشبهmultiFuzzyMatchAny، لكنه يعيد مصفوفة بجميع الفهارس المطابقة لـ haystack، بأي ترتيب، ضمن مسافة تحرير ثابتة.
الصياغة
haystack— سلسلة يُجرى البحث فيها.Stringdistance— الحد الأقصى لمسافة التحرير للمطابقة التقريبية.UInt8pattern— مصفوفة من الأنماط المطلوب المطابقة معها.Array(String)
haystack ضمن مسافة التحرير المحددة، بأي ترتيب. ويعيد مصفوفة فارغة إذا لم يتم العثور على أي تطابقات. Array(UInt64)
أمثلة
مثال على الاستخدام
Query
Response
multiFuzzyMatchAny
أُضيف في: v20.1.0 مثلmultiMatchAny، لكنه يعيد القيمة 1 إذا طابق أي نمط النص ضمن مسافة تحرير ثابتة.
تعتمد هذه الدالة على الميزة التجريبية في مكتبة hyperscan، وقد تكون بطيئة في بعض الحالات الحدّية.
يعتمد الأداء على قيمة مسافة التحرير والأنماط المستخدمة، لكنه يكون دائمًا أعلى كلفة مقارنةً بالنظائر غير التقريبية.
لا تدعم عائلة الدوال
multiFuzzyMatch*() التعبيرات النمطية UTF-8 (إذ تتعامل معها كتسلسل من البايتات) بسبب قيود hyperscan.haystack— السلسلة التي يُجرى فيها البحث.Stringdistance— الحد الأقصى لمسافة التحرير للمطابقة التقريبية.UInt8pattern— اختياري. مصفوفة من الأنماط للمطابقة معها.Array(String)
1 إذا طابق أي نمط القيمة haystack ضمن مسافة التحرير المحددة، وإلا فتُرجِع 0. UInt8
أمثلة
مثال على الاستخدام
Query
Response
multiFuzzyMatchAnyIndex
أُضيف في: v20.1.0 مثلmultiFuzzyMatchAny، لكنه يُرجع أي فهرس يطابق haystack ضمن مسافة تحرير ثابتة.
الصياغة
haystack— السلسلة النصية التي يُجرى البحث فيها.Stringdistance— الحد الأقصى لمسافة التحرير للمطابقة التقريبية.UInt8pattern— مصفوفة من الأنماط المطلوب المطابقة معها.Array(String)
haystack ضمن مسافة التحرير المحددة (بدءًا من 1)، وإلا يعيد 0. UInt64
أمثلة
مثال على الاستخدام
Query
Response
multiMatchAllIndices
قُدِّمت في: v20.1.0 مثلmultiMatchAny، لكنها تُرجع مصفوفة بجميع الفهارس التي تطابق haystack بأي ترتيب.
البنية
haystack— السلسلة التي يُجرى البحث فيها.Stringpattern— التعبيرات النمطية المطلوب المطابقة معها.String
haystack بأي ترتيب. وتُرجع مصفوفة فارغة إذا لم يتم العثور على أي تطابقات. Array(UInt64)
أمثلة
مثال على الاستخدام
Query
Response
multiMatchAny
أُضيفت في: v20.1.0 تحقّق مما إذا كان واحد على الأقل من عدة أنماط للتعبيرات النمطية يطابق النص المراد البحث فيه. إذا كنت تريد فقط البحث عن عدة سلاسل فرعية داخل سلسلة نصية، يمكنك استخدام الدالةmultiSearchAny بدلًا من ذلك، فهي أسرع بكثير من هذه الدالة.
البنية
haystack— السلسلة التي يُبحث فيها عن الأنماط.Stringpattern1[, pattern2, ...]— مصفوفة تضم نمط تعبير نمطي واحدًا أو أكثر.Array(String)
1 إذا طابق أي نمط، و0 خلاف ذلك. UInt8
أمثلة
مطابقة عدة أنماط
Query
Response
Query
Response
multiMatchAnyIndex
أُضيف في: v20.1.0 مثلmultiMatchAny، لكنه يُرجع فهرس أي تطابق مع haystack.
الصيغة
haystack— سلسلة نصية يُجرى البحث فيها.Stringpattern— تعبيرات نمطية تجري المطابقة معها.Array(String)
UInt64
أمثلة
مثال على الاستخدام
Query
Response
multiSearchAllPositions
أُضيف في: v20.1.0 مثلposition، لكنه يعيد مصفوفة من المواضع (بالبايت، بدءًا من 1) لعدة سلاسل فرعية needle ضمن سلسلة haystack.
لا تدعم جميع دوال multiSearch*() أكثر من 2^8 من قيم needle.
الصياغة
haystack— سلسلة يُجرى البحث فيها.Stringneedle1[, needle2, ...]— مصفوفة تضم سلسلة فرعية واحدة أو أكثر للبحث عنها.Array(String)
0 إذا لم يُعثر عليها. Array(UInt64)
أمثلة
البحث عن عدة سلاسل فرعية
Query
Response
multiSearchAllPositionsCaseInsensitive
أُضيف في: v20.1.0 يشبهmultiSearchAllPositions، لكنه لا يميّز بين الأحرف الكبيرة والصغيرة.
الصيغة
haystack— سلسلة نصية يُجرى البحث فيها.Stringneedle1[, needle2, ...]— مصفوفة تضم سلسلة فرعية واحدة أو أكثر للبحث عنها.Array(String)
0 إذا لم يُعثر على السلسلة الفرعية. Array(UInt64)
أمثلة
بحث متعدد غير حساس لحالة الأحرف
Query
Response
multiSearchAllPositionsCaseInsensitiveUTF8
أُضيف في: v20.1.0 مثلmultiSearchAllPositionsUTF8، لكنه يتجاهل اختلاف حالة الأحرف.
البنية
haystack— سلسلة مرمّزة بترميز UTF-8 يُجرى البحث فيها.Stringneedle— سلاسل فرعية مرمّزة بترميز UTF-8 يُبحث عنها.Array(String)
Array
أمثلة
بحث UTF-8 غير متأثر بحالة الأحرف
Query
Response
multiSearchAllPositionsUTF8
متوفرة منذ: v20.1.0 تشبهmultiSearchAllPositions، لكنها تفترض أن haystack والسلاسل الفرعية needle عبارة عن سلاسل نصية مرمّزة بترميز UTF-8.
الصياغة
haystack— سلسلة مرمّزة بترميز UTF-8 يُجرى البحث فيها.Stringneedle1[, needle2, ...]— مصفوفة من السلاسل الفرعية المرمّزة بترميز UTF-8 المطلوب البحث عنها.Array(String)
0 إذا لم يُعثر على السلسلة الفرعية. Array
أمثلة
بحث متعدد في UTF-8
Query
Response
multiSearchAny
أُضيف في: v20.1.0 يتحقق مما إذا كانت واحدة على الأقل من السلاسل المطلوب البحث عنها تطابق السلسلة المراد البحث فيها. توفّر الدوالmultiSearchAnyCaseInsensitive، multiSearchAnyUTF8 وmultiSearchAnyCaseInsensitiveUTF8 صيغًا غير حساسة لحالة الأحرف و/أو صيغ UTF-8 لهذه الدالة.
الصيغة
haystack— السلسلة التي يُجرى البحث فيها.Stringneedle1[, needle2, ...]— مصفوفة من السلاسل الفرعية المراد البحث عنها.Array(String)
1 عند وجود مطابقة واحدة على الأقل، وإلا يعيد 0. UInt8
أمثلة
البحث عن أي مطابقة
Query
Response
multiSearchAnyCaseInsensitive
أُضيفت في: v20.1.0 مثل multiSearchAny، لكنه يتجاهل حالة الأحرف. البنيةhaystack— السلسلة التي يُجرى فيها البحث.Stringneedle— السلاسل الفرعية المطلوب البحث عنها.Array(String)
1 إذا وُجدت مطابقة واحدة على الأقل غير حسّاسة لحالة الأحرف، وإلا فيعيد 0. UInt8
أمثلة
بحث غير حسّاس لحالة الأحرف
Query
Response
multiSearchAnyCaseInsensitiveUTF8
استُحدث في: v20.1.0 مثل multiSearchAnyUTF8 لكنه لا يميّز بين الأحرف الكبيرة والصغيرة. الصياغةhaystack— سلسلة UTF-8 يُجرى فيها البحث.Stringneedle— سلاسل فرعية بترميز UTF-8 يُبحث عنها.Array(String)
1 إذا وُجدت مطابقة واحدة على الأقل دون حساسية لحالة الأحرف، وإلا فتُرجع 0. UInt8
أمثلة
في سلسلة UTF-8 ‘Здравствуйте’، تحقّق مما إذا كان الحرف ‘з’ (حرفًا صغيرًا) موجودًا
Query
Response
multiSearchAnyUTF8
أُضيفت في: v20.1.0 مثل multiSearchAny، لكنها تفترض أنhaystack والسلاسل الفرعية needle هي سلاسل نصية مرمّزة بترميز UTF-8.
الصيغة
haystack— سلسلة UTF-8 يُجرى البحث داخلها.Stringneedle— سلاسل فرعية بترميز UTF-8 يُبحث عنها.Array(String)
1 إذا وُجدت مطابقة واحدة على الأقل، وإلا فتُرجع 0 إذا لم توجد أي مطابقة. UInt8
أمثلة
باعتبار ‘你好,世界’ (‘Hello, world’) سلسلة UTF-8، تحقّق مما إذا كانت السلسلة تحتوي على أي من الحرفين 你 أو 界
Query
Response
multiSearchFirstIndex
أُضيف في: v20.1.0 يبحث عن عدة سلاسل needle داخل سلسلة haystack (مع مراعاة حالة الأحرف)، ويُرجع فهرسًا يبدأ من 1 لأول needle يتم العثور عليه. البنيةhaystack— السلسلة النصية المطلوب البحث فيها.Stringneedles— مصفوفة من السلاسل النصية المطلوب البحث عنها.Array(String)
needles) لأول needle يُعثر عليه في haystack. وتعيد 0 إذا لم يتم العثور على أي من عناصر needles. البحث حساس لحالة الأحرف. UInt64
أمثلة
مثال على الاستخدام
Query
Response
Query
Response
Query
Response
multiSearchFirstIndexCaseInsensitive
قُدِّمت في: v20.1.0 تعيد الفهرسi (ابتداءً من 1) لأول needle_i يتم العثور عليه من اليسار في السلسلة haystack، وتعيد 0 بخلاف ذلك.
يتجاهل حالة الأحرف.
البنية
haystack— السلسلة النصية التي يُجرى فيها البحث.Stringneedle— السلاسل الفرعية المراد البحث عنها.Array(String)
needle يُعثر عليه من جهة اليسار. وإذا لم توجد أي مطابقة، فستكون القيمة 0. UInt8
أمثلة
مثال على الاستخدام
Query
Response
multiSearchFirstIndexCaseInsensitiveUTF8
أُضيفت في: v20.1.0 تبحث عن عدة سلاسل needle داخل سلسلة haystack، من دون تمييز بين الأحرف الكبيرة والصغيرة مع دعم ترميز UTF-8، وتُرجع فهرسًا يبدأ من 1 لأول needle يتم العثور عليه. الصيغةhaystack— السلسلة النصية المطلوب البحث فيها.Stringneedles— مصفوفة من السلاسل النصية المطلوب البحث عنها.Array(String)
needles) لأول سلسلة يتم العثور عليها داخل haystack. وتُرجع 0 إذا لم يتم العثور على أي سلسلة. البحث غير حساس لحالة الأحرف، ويراعي ترميز المحارف UTF-8. UInt64
أمثلة
مثال على الاستخدام
Query
Response
Query
Response
Query
Response
multiSearchFirstIndexUTF8
قُدِّمت في: v20.1.0 تُرجع الفهرسi (بدءًا من 1) لأول needle_i يتم العثور عليه من أقصى اليسار في السلسلة haystack، وتُرجع 0 بخلاف ذلك.
وتفترض أن haystack وneedle سلسلتان مرمّزتان بترميز UTF-8.
البنية
haystack— سلسلة UTF-8 يُجرى البحث فيها.Stringneedle— مصفوفة من السلاسل الفرعية بترميز UTF-8 المطلوب البحث عنها.Array(String)
needle يتم العثور عليه من جهة اليسار. وإذا لم توجد أي مطابقة، فتكون القيمة 0. UInt8
أمثلة
مثال على الاستخدام
Query
Response
multiSearchFirstPosition
قُدِّمت في: v20.1.0 تشبهposition، لكنها تُرجع الإزاحة الأولى في سلسلة haystack التي تطابق أيًا من سلاسل needle المتعددة.
توفّر الدوال multiSearchFirstPositionCaseInsensitive وmultiSearchFirstPositionUTF8 وmultiSearchFirstPositionCaseInsensitiveUTF8 أشكالًا غير حساسة لحالة الأحرف و/أو أشكال UTF-8 لهذه الدالة.
الصياغة
haystack— السلسلة النصية التي يُجرى فيها البحث.Stringneedle1[, needle2, ...]— مصفوفة تضم سلسلة فرعية واحدة أو أكثر للبحث عنها.Array(String)
haystack تطابق أيًا من سلاسل needle المتعددة، وإلا فستكون 0 إذا لم يُعثر على أي تطابق. UInt64
أمثلة
البحث عن أول موضع
Query
Response
multiSearchFirstPositionCaseInsensitive
تم تقديمه في: v20.1.0 مثل multiSearchFirstPosition، لكنه لا يميّز بين الأحرف الكبيرة والصغيرة. البنيةhaystack— السلسلة التي يُجرى فيها البحث.Stringneedle— مصفوفة من السلاسل الفرعية المطلوب البحث عنها.Array(String)
haystack تطابق أيًّا من سلاسل needle. وتعيد 0 إذا لم توجد أي مطابقة. UInt64
أمثلة
أول موضع دون حساسية لحالة الأحرف
Query
Response
multiSearchFirstPositionCaseInsensitiveUTF8
أُضيف في: v20.1.0 يشبه multiSearchFirstPosition، لكنه يفترض أنhaystack وneedle سلسلتان بترميز UTF-8 ولا يميّز بين الأحرف الكبيرة والصغيرة.
الصياغة
haystack— سلسلة نصية بترميز UTF-8 يُجرى البحث فيها.Stringneedle— مصفوفة من السلاسل الفرعية بترميز UTF-8 المطلوب البحث عنها.Array(String)
haystack تطابق أيًّا من سلاسل needle المتعددة، مع تجاهل حالة الأحرف. وتعيد 0 إذا لم يتم العثور على أي تطابق. UInt64
أمثلة
اعثر على أول إزاحة في سلسلة UTF-8 ‘Здравствуй, мир’ (‘Hello, world’) تطابق أيًّا من قيم needle المعطاة
Query
Response
multiSearchFirstPositionUTF8
أُضيفت في: v20.1.0 مثل multiSearchFirstPosition، لكنه يفترض أنhaystack وneedle سلسلتان نصيتان بترميز UTF-8.
البنية
haystack— سلسلة UTF-8 يُجرى البحث ضمنها.Stringneedle— مصفوفة من المقاطع الفرعية بترميز UTF-8 المطلوب البحث عنها.Array(String)
haystack تطابق أيًا من سلاسل needle المتعددة. تُعيد 0 إذا لم توجد أي مطابقة. UInt64
أمثلة
اعثر على أول إزاحة في سلسلة UTF-8 ‘Здравствуй, мир’ (‘Hello, world’) تطابق أيًا من قيم needle المعطاة
Query
Response
ngramDistance
أُضيفت في: v20.1.0 تحسب مسافة 4-gram بين سلسلتين نصيتين. ولهذا، تحسب الفرق المتماثل بين مجموعتين متعدّدتي العناصر من 4-grams ثم تقسّمه على مجموع عدد عناصرهما. كلما صغرت القيمة المُعادة، زاد التشابه بين السلسلتين النصيتين. للبحث غير المتأثر بحالة الأحرف و/أو بتنسيق UTF8، استخدم الدوالngramDistanceCaseInsensitive, ngramDistanceUTF8, ngramDistanceCaseInsensitiveUTF8.
البنية
Float32 بين 0 و1. وكلما صغرت القيمة المُعادة، زاد التشابه بين السلسلتين. Float32
أمثلة
حساب مسافة 4-gram
Query
Response
ngramDistanceCaseInsensitive
قُدِّمت في: v20.1.0 توفّر نسخة غير حساسة لحالة الأحرف منngramDistance.
تحسب مسافة 4-gram بين سلسلتين نصيتين مع تجاهل حالة الأحرف.
كلما صغرت القيمة المُعادة، زاد التشابه بين السلسلتين النصيتين.
الصيغة
0 و1. Float32
أمثلة
مسافة 4-gram بدون تمييز حالة الأحرف
Query
Response
ngramDistanceCaseInsensitiveUTF8
أُضيف في: v20.1.0 يوفّر إصدار UTF-8 منngramDistance لا يراعي حالة الأحرف.
يفترض أن السلسلتين needle وhaystack مرمَّزتان بترميز UTF-8، ولا يراعي حالة الأحرف.
يحسب مسافة 3-gram بين سلسلتين بترميز UTF-8 دون مراعاة حالة الأحرف.
كلما صغرت القيمة المُعادة، زاد التشابه بين السلسلتين.
البنية
haystack— سلسلة المقارنة الأولى المرمّزة بترميز UTF-8.Stringneedle— سلسلة المقارنة الثانية المرمّزة بترميز UTF-8.String
0 و1. Float32
أمثلة
مسافة 3-gram غير الحساسة لحالة الأحرف في UTF-8
Query
Response
ngramDistanceUTF8
قُدِّمت في: v20.1.0 يوفّر إصدار UTF-8 منngramDistance.
يفترض أن سلسلتي needle وhaystack مرمّزتان بترميز UTF-8.
يحسب مسافة 3-gram بين سلسلتين بترميز UTF-8.
كلما كانت القيمة المُعادة أصغر، زاد التشابه بين السلسلتين.
البنية
haystack— سلسلة المقارنة الأولى المرمّزة بترميز UTF-8.Stringneedle— سلسلة المقارنة الثانية المرمّزة بترميز UTF-8.String
0 و1. Float32
أمثلة
مسافة 3-gram بترميز UTF-8
Query
Response
ngramSearch
أُضيف في: v20.1.0 يتحقق مما إذا كانت مسافة 4-gram بين سلسلتين نصيتين أقل من أو تساوي عتبة محددة. لإجراء بحث غير حساس لحالة الأحرف أو بتنسيق UTF8 أو كليهما، استخدم الدوالngramSearchCaseInsensitive وngramSearchUTF8 وngramSearchCaseInsensitiveUTF8.
الصيغة
1 إذا كانت مسافة 4-gram بين السلسلتين أقل من العتبة أو تساويها (1.0 افتراضيًا)، وإلا فتعيد 0. UInt8
أمثلة
البحث باستخدام 4-grams
Query
Response
ngramSearchCaseInsensitive
أُضيفت في: v20.1.0 توفّر متغيّرًا غير حساس لحالة الأحرف منngramSearch.
تحسب الفرق غير المتماثل بين سلسلة needle وسلسلة haystack، أي عدد مقاطع n-gram في needle مطروحًا منه العدد المشترك من مقاطع n-gram، ثم يُطبَّع على عدد مقاطع n-gram في needle.
تتحقق مما إذا كانت مسافة 4-gram بين سلسلتين أقل من أو تساوي threshold محددة، مع تجاهل حالة الأحرف.
البنية
1 إذا كانت مسافة 4-gram بين السلسلتين أقل من العتبة أو تساويها (1.0 افتراضيًا)، وإلا فتعيد 0. UInt8
أمثلة
بحث غير حساس لحالة الأحرف باستخدام 4-grams
Query
Response
ngramSearchCaseInsensitiveUTF8
قُدِّم في: v20.1.0 يوفّر إصدارًا منngramSearch يعمل على UTF-8 دون تمييز بين الأحرف الكبيرة والصغيرة.
يفترض أن haystack وneedle سلسلتان نصيتان بترميز UTF-8، ويتجاهل الفرق بين الأحرف الكبيرة والصغيرة.
يتحقق مما إذا كانت مسافة 3-gram بين سلسلتين نصيتين بترميز UTF-8 أقل من أو تساوي عتبة محددة، دون تمييز بين الأحرف الكبيرة والصغيرة.
الصيغة
1 إذا كانت مسافة 3-gram بين السلسلتين أقل من العتبة أو تساويها (1.0 افتراضيًا)، وإلا فيعيد 0. UInt8
أمثلة
بحث UTF-8 غير حساس لحالة الأحرف باستخدام 3-grams
Query
Response
ngramSearchUTF8
قُدِّمت في: v20.1.0 توفّر إصدارًا بترميز UTF-8 منngramSearch.
تفترض أن haystack وneedle سلسلتان نصيتان بترميز UTF-8.
يتحقق مما إذا كانت مسافة 3-gram بين سلسلتين نصيتين بترميز UTF-8 أقل من أو تساوي عتبة محددة.
البنية
1 إذا كانت مسافة 3-gram بين السلسلتين أقل من العتبة أو تساويها (1.0 افتراضيًا)، وإلا فيُرجع 0. UInt8
أمثلة
البحث في UTF-8 باستخدام 3-grams
Query
Response
notILike
أُتيح في: v20.6.0 يتحقق مما إذا كانت السلسلة النصية لا تطابق نمطًا، مع تجاهل حالة الأحرف. يمكن أن يحتوي النمط على المحرفين الخاصين% و _ لمطابقة SQL LIKE. ويدعم عبارة ESCAPE الاختيارية (راجع like).
البنية
haystack— سلسلة الإدخال المراد البحث فيها.StringأوFixedStringpattern— نمط SQL LIKE المراد مطابقته. يطابق%أي عدد من المحارف (بما في ذلك الصفر)، ويطابق_محرفًا واحدًا فقط.Stringescape_character— سلسلة اختيارية من محرف واحد تُستخدَم كمحرف هروب بدلًا من\. القيمة الافتراضية:\.String
1 إذا كانت السلسلة لا تطابق النمط (من دون حساسية لحالة الأحرف)، وإلا فتعيد 0. UInt8
أمثلة
مثال على الاستخدام
Query
Response
notLike
أُضيف في: v1.1.0 مماثلة لـlike، لكنها تنفي النتيجة. وتدعم بند ESCAPE الاختياري (راجع like).
الصيغة
haystack— السلسلة التي يُجرى فيها البحث.StringأوFixedStringpattern— نمطLIKEالمراد مطابقته.Stringescape_character— سلسلة اختيارية مكوّنة من محرف واحد تُستخدم كمحرف هروب بدلًا من\. القيمة الافتراضية:\.String
1 إذا كانت السلسلة لا تطابق نمط LIKE، وإلا فتُرجع 0. UInt8
أمثلة
مثال على الاستخدام
Query
Response
Query
Response
notMatch
أُضيف في: v26.8.0 مشابهة للدالةmatch، لكنها تنفي النتيجة: تتحقق من أن السلسلة النصية لا تطابق نمط التعبير النمطي.
تستخدم هذه الدالة مكتبة RE2 للتعبيرات النمطية. يُرجى الرجوع إلى re2 للاطلاع على الصياغة المدعومة.
صياغة عامل التشغيل البديلة: haystack !~ pattern (بنمط PostgreSQL).
الصيغة
haystack— سلسلة يُبحث فيها عن النمط.Stringpattern— نمط تعبير نمطي. يمكن أن يكون ثابتًا أو أن يأتي من عمود.String
0 إذا كان هناك تطابق مع النمط، و1 خلاف ذلك. UInt8
أمثلة
مثال على الاستخدام
Query
Response
notMatchCaseInsensitive
أُضيف في: v26.8.0 تشبهmatchCaseInsensitive، لكنها تنفي النتيجة: إذ تتحقق من أن السلسلة النصية لا تطابق نمط التعبير النمطي دون تمييز بين حالة الأحرف.
تستخدم هذه الدالة مكتبة RE2 للتعبيرات النمطية. يُرجى الرجوع إلى re2 للاطلاع على الصياغة المدعومة.
صياغة عامل التشغيل البديلة: haystack !~* pattern (بأسلوب PostgreSQL).
الصيغة
haystack— سلسلة يُبحث فيها عن النمط.Stringpattern— نمط تعبير نمطي. يمكن أن يكون ثابتًا أو أن يأتي من عمود.String
0 إذا كان النمط يتطابق دون تمييز حالة الأحرف، و1 خلاف ذلك. UInt8
أمثلة
مثال على الاستخدام
Query
Response
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.
الصيغة
haystack— السلسلة التي يُجرى البحث فيها.StringأوEnumneedle— السلسلة الفرعية المراد البحث عنها.Stringstart_pos— الموضع فيhaystackالذي يبدأ منه البحث (بترقيم يبدأ من 1). اختياري.UInt
0 إذا لم يُعثر عليها. UInt64
أمثلة
الاستخدام الأساسي
Query
Response
Query
Response
Query
Response
Query
Response
positionCaseInsensitive
أُضيف في: v1.1.0 مثلposition، لكنه غير حساس لحالة الأحرف.
الصيغة
instr
الوسيطات
haystack— السلسلة التي يُجرى البحث فيها.StringأوEnumneedle— السلسلة الفرعية المطلوب البحث عنها.Stringstart_pos— اختياري. الموضع (مع احتساب المواضع بدءًا من 1) فيhaystackالذي يبدأ منه البحث.UInt*
0. UInt64
أمثلة
بحث غير حساس لحالة الأحرف
Query
Response
positionCaseInsensitiveUTF8
أُضيفت في: v1.1.0 مثلpositionUTF8، لكنها تبحث مع تجاهل حالة الأحرف.
الصيغة
haystack— السلسلة التي يُجرى البحث فيها.StringأوEnumneedle— السلسلة الفرعية المراد البحث عنها.Stringstart_pos— اختياري. الموضع فيhaystackالذي يبدأ منه البحث (مع احتساب الموضع الأول على أنه 1).UInt*
0 إذا لم يُعثر عليها. UInt64
أمثلة
بحث UTF-8 غير حساس لحالة الأحرف
Query
Response
positionUTF8
أُضيف في: v1.1.0 يشبهposition، لكنه يفترض أن haystack وneedle سلسلتان نصيتان مرمّزتان بترميز UTF-8.
الصيغة
haystack— السلسلة التي يُجرى البحث فيها.StringأوEnumneedle— السلسلة الفرعية المراد البحث عنها.Stringstart_pos— اختياري. الموضع فيhaystackالذي يبدأ منه البحث (مع بدء العد من 1).UInt*
0 إذا لم يُعثر عليها. UInt64
أمثلة
عدّ محارف UTF-8
Query
Response