[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذه الصورة]
استخدام عوامل المقارنة التى تم عرضها بالموضوع السابق مع الأرقام والتواريخ والـ NULL امر بسيط وسهل جدا.
لكن النصوص, ربما تحتاج لبعض الحيل.
انظر معى الكود التالى
كود :
SELECT * FROM `users` WHERE username = 'pepo'
بمنتهى البساطة كما ترى سوف يتم استخراج بيانات اى عضو قيمة حقل الـ username له هى pepo
لكن هذا يعنى pepo فقط وليس pepo_1 او اى شئ من هذا القبيل.
بالتالى اذا لم يكن هناك اى بيانات مسجلة وحقل الـ username بها = pepo
لن يتم استخراج اى شئ.
لكن هذا الأمر ليس مجدى فى بعض الأحيان. مقارنة النصوص تحتاج لأمور اكثر سلاسة.
مثلا نرد ان نستخرج كل البيانات للأعضاء الذى يبدأ اسمهم مع كلمة pepo او حتى ينتهى بها, او حتى يكون الإسم به كلمة pepo ولا نشترط ببدايته او بنهايته.
وهذا هو دور عامل المقارنة LIKE
مثلا, اذا اردنا استخراج بيانات اى عضو يبدأ اسمه بكلمة mysql
يتم الأمر بالشكل التالى
كود :
SELECT * FROM `users` WHERE username LIKE 'mysql%'
حيث رمز % يعنى اى شئ, المثال اعلاه يمكنه ان يستخرج مثلا mysql_php
او mysql_server او mysql فقط او اى شئ اخر يبدأ بكلمة mysql
يمكننا ايضا ان نستخرج اى بيانات يكون الـ username لها يحتوى على كلمة php
ولا نشترط بالبداية او النهاية
كود :
SELECT * FROM `users` WHERE username LIKE '%php%'
مع الوضع فى الإعتبار ان عامل المقارنة LIKE ليس حساس تجاه حالة الأحرف الكبيرة والصغيرة. ولذلك المثال اعلاه يمكنه ايضا ان يستخرج PhP او PHP, الخ.
وايضا يمكننا البحث بطريقة اخرى.
مثلا, نريد ان نبحث عن اى كلمة تنبدأ بـ Ahmed ويأتى بعدها حرف واحد
كود :
SELECT * FROM `users` WHERE username LIKE 'Ahmed_'
حيث علامة _ تعنى عدد الأحرف المتبقية, واذا كان ماتبقى عبارة عن مسافة فارغة, يتم عدها ايضا.
ويمكننا استخدام اكثر من _ كما يحلوا لنا.
وعلى عكس LIKE تأتى NOT LIKE
فهى تستخرج اى شئ ليس شبيه بما نعطه لها.
كامثال, نريد استخراج بيانات كل الأعضاء الا اى عضو يحتوى اسمه على كلمة pepo (طفشنا بيبو
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذه الصورة] )
كود :
SELECT * FROM `users` WHERE username NOT LIKE '%pepo%'
بعض الملحوظات السريعة.
استخدام المقارنة بواسطة LIKE و NOT LIKE عادة يكون بطئ.
كما يمكنك ان تضيف خاصية Index لأحد الحقول التى ترى انك ستقوم بإجراء مقارنة عليها بواسطة LIKE و NOT LIKE كثيرا, فـ هذا سوف يجعل الأمر يعمل بشكل اسرع.
لكن لن يفرق فى شئ عند وضعك لعلامة % قبل النص الذى تطابقه, فهى ستظل تعمل ببطئ. اما اذا كانت بنهايته % وتم اضافة خاصية الـ INDEX للحقل. هذا سوف يجعلها تعمل بشكل افضل بإذن الله.
وايضا اذا كنت تريد مطابقة نص ما, وهذا النص يحتوى على علامة % او _
يجب وضع علامة \ قبلهم حتى يتم معاملتهم معاملة حرفية, بدل معالجتهم على انهم جزء من كود المقارنة.
اتمنى يكون درس اليوم بسيط واراكم بالدرس المقبل بإذن الله.
المصدر:
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]