WHERE تصفية البيانات القادمة من عبارة FROM في SELECT.
إذا وُجدت عبارة WHERE، فيجب أن تليها تعبير من النوع UInt8.
وتُستبعَد الصفوف التي تُقيَّم فيها هذه التعبير إلى 0 من المعالجات اللاحقة أو من النتيجة.
غالبًا ما تُستخدم تعبير التي تلي عبارة WHERE مع عوامل المقارنة والعوامل المنطقية، أو مع إحدى الدوال العادية العديدة.
تُقيَّم تعبير الخاصة بـ WHERE من حيث إمكانية استخدام الفهارس وpartition pruning، إذا كان table engine الخاص بـ underlying table يدعم ذلك.
PREWHEREتوجد أيضًا آلية تحسين للتصفية تُسمى
PREWHERE.
Prewhere هو تحسين يتيح تطبيق التصفية بكفاءة أعلى.
وهو مفعّل افتراضيًا حتى إذا لم تُحدَّد عبارة PREWHERE صراحةً.التحقق من NULL
إذا كنت بحاجة إلى التحقق مما إذا كانت قيمة هي NULL، فاستخدم:
IS NULLأوisNullIS NOT NULLأوisNotNull
NULL أي شرط مطلقًا.
تصفية البيانات باستخدام العوامل المنطقية
يمكنك استخدام الدوال المنطقية التالية مع عبارةWHERE لدمج عدة شروط:
استخدام أعمدة UInt8 كشرط
في ClickHouse، يمكن استخدام أعمدة UInt8 مباشرةً كشروط منطقية، بحيث تمثّل 0 القيمة false وتمثّل أي قيمة غير صفرية (وغالبًا 1) القيمة true.
ويَرِد مثال على ذلك في القسم أدناه.
استخدام عوامل المقارنة
يمكن استخدام عوامل المقارنة التالية:مطابقة الأنماط والتعبيرات الشرطية
إلى جانب عوامل المقارنة، يمكنك استخدام مطابقة الأنماط والتعبيرات الشرطية في عبارةWHERE.
راجع “مطابقة الأنماط والتعبيرات الشرطية” للاطلاع على أمثلة الاستخدام.
تعبير يتضمن قيماً حرفية أو أعمدة أو استعلامات فرعية
يمكن أن يتضمن التعبير الذي يلي عبارةWHERE أيضاً قيماً حرفية، أو أعمدة، أو استعلامات فرعية، وهي عبارات SELECT متداخلة تُرجِع قيماً تُستخدم في الشروط.
يمكنك المزج بين القيم الحرفية والأعمدة والاستعلامات الفرعية في الشروط المعقدة:
أمثلة
التحقق من NULL
الاستعلامات التي تتضمن قيماً من نوع NULL:
تصفية البيانات باستخدام العوامل المنطقية
بالنظر إلى الجدول والبيانات التاليين:AND - يجب أن يكون كلا الشرطين true:
OR - يجب أن يتحقق شرط واحد على الأقل:
NOT - ينفي شرطًا:
XOR - يجب أن يتحقق شرط واحد فقط (وليس كلاهما):
AND, OR, NOT, XOR) أوضح للقراءة عمومًا، لكن صيغة الدوال قد تكون مفيدة في التعبيرات المعقدة أو عند إنشاء استعلامات ديناميكية.
استخدام أعمدة UInt8 كشرط
انطلاقًا من الجدول الوارد في مثال سابق، يمكنك استخدام اسم العمود مباشرةً كشرط:استخدام معاملات المقارنة
تستخدم الأمثلة أدناه الجدول والبيانات من المثال أعلاه. حُذفت النتائج للإيجاز. 1. المساواة الصريحة مع true (= 1 أو = true):
= 0 أو = false):
!= 0 أو != false):
IN:
في المثال أدناه، تمثّل (1, true) قيمة من النوع Tuple.
مطابقة الأنماط والتعبيرات الشرطية
تستخدم الأمثلة أدناه الجدول والبيانات الواردين في المثال أعلاه. وحُذفت النتائج للاختصار.أمثلة على LIKE
أمثلة على ILIKE
أمثلة على SIMILAR TO
على خلافLIKE، يقبل النمط في SIMILAR TO أيضًا المحارف الوصفية الخاصة بالتعبيرات النمطية | و* و+ و? و{ و} و( و) و[ و]، ويجب أن يطابق القيمة بأكملها كما هو الحال في LIKE:
ESCAPE، وهي تعمل أيضًا مع LIKE وILIKE وNOT LIKE وNOT ILIKE وNOT SIMILAR TO:
SIMILAR TO للاطلاع على صياغة الأنماط كاملةً.