الجمع بين LIKE و IN لاستعلامات SQL المتقدمة
في SQL، غالبًا ما يتم استخدام عامل التشغيل LIKE لمطابقة الأنماط، بينما يسمح عامل التشغيل IN بذلك لنا لمطابقة قيمة مقابل قائمة قيم محددة. على الرغم من أن عوامل التشغيل هذه تخدم أغراضًا مختلفة، فمن الممكن دمجها لإنشاء استعلامات أكثر قوة.
لنأخذ في الاعتبار السيناريو التالي: لديك جدول يحتوي على عمود يسمى "company_id" وتريد تحديد كافة الصفوف التي يوجد بها يبدأ "company_id" بسلاسل محددة، مثل "M510"، و"M615"، و"M515"، و"M612".
قد يكون استخدام أحد الأساليب عامل التشغيل LIKE كما يلي:
SELECT * FROM tablename WHERE company_id LIKE 'M510%'
ومع ذلك، فإن هذا سيطابق فقط الصفوف التي تبدأ بـ "M510" تمامًا. لمطابقة سلاسل متعددة، يجب عليك إنشاء استعلامات متعددة.
استخدام السلسلة الفرعية مع IN
الحل الأكثر فعالية هو استخدام سلسلة فرعية مع عامل التشغيل IN. تستخرج الدالة SUBSTRING() عددًا محددًا من الأحرف من سلسلة، بدءًا من موضع معين.
بالنسبة للسيناريو الخاص بنا، يمكننا استخدام الاستعلام التالي:
SELECT * FROM tablename WHERE SUBSTRING(company_id, 1, 4) IN ('M510', 'M615', 'M515', 'M612')
سيقوم هذا الاستعلام باستخراج الأحرف الأربعة الأولى من عمود "company_id" والتحقق مما إذا كان إنه موجود في قائمة القيم المحددة في جملة IN. من خلال دمج السلسلة الفرعية مع IN، يمكننا تحقيق مطابقة النمط المطلوب دون الحاجة إلى التكرار فوق مجموعة من السلاسل.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3