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 كشرط
UInt8 مباشرةً كشروط منطقية، بحيث تمثّل 0 القيمة false وتمثّل أي قيمة غير صفرية (وغالبًا 1) القيمة true.
ويَرِد مثال على ذلك في القسم أدناه.
استخدام معاملات المقارنة
مطابقة الأنماط والتعبيرات الشرطية
WHERE.
راجع “مطابقة الأنماط والتعبيرات الشرطية” للاطلاع على أمثلة الاستخدام.
تعبير يتضمن قيماً حرفية أو أعمدة أو استعلامات فرعية
WHERE أيضاً قيماً حرفية، أو أعمدة، أو استعلامات فرعية، وهي عبارات SELECT متداخلة تُرجِع قيماً تُستخدم في الشروط.
يمكنك المزج بين القيم الحرفية والأعمدة والاستعلامات الفرعية في الشروط المعقدة:
أمثلة
التحقق من NULL
NULL:
تصفية البيانات باستخدام العوامل المنطقية
AND - يجب أن يكون كلا الشرطين true:
OR - يجب أن يتحقق شرط واحد على الأقل:
NOT - ينفي شرطًا:
XOR - يجب أن يتحقق شرط واحد فقط (وليس كلاهما):
AND, OR, NOT, XOR) أوضح للقراءة عمومًا، لكن صيغة الدوال قد تكون مفيدة في التعبيرات المعقدة أو عند إنشاء استعلامات ديناميكية.
استخدام أعمدة UInt8 كشرط
استخدام معاملات المقارنة
= 1 أو = true):
= 0 أو = false):
!= 0 أو != false):
IN:
في المثال أدناه، تمثّل (1, true) قيمة من النوع Tuple.