منتدى العرب التعليمى
أهلاً وسهلاً بأخي


أسعدنا تواجدك بيننا على أمل أن تستمتع وتستفيد
وننتظر مشاركاتك وتفاعلك
فمرحباً بك بين إخوانك وأخواتك
ونسأل الله لك التوفيق والنجاح والتميز
الــــــــــفـــــــــــر عــــــــــــــون الـــمــــصــــــر ى
منتدى العرب التعليمى
أهلاً وسهلاً بأخي


أسعدنا تواجدك بيننا على أمل أن تستمتع وتستفيد
وننتظر مشاركاتك وتفاعلك
فمرحباً بك بين إخوانك وأخواتك
ونسأل الله لك التوفيق والنجاح والتميز
الــــــــــفـــــــــــر عــــــــــــــون الـــمــــصــــــر ى
منتدى العرب التعليمى
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.

منتدى العرب التعليمى

منتدى العرب التعليمى تعليمى شامل
 
الرئيسيةأحدث الصورالتسجيلدخول

 

 استخدام LIKE و NOT LIKE فى WHERE clause

اذهب الى الأسفل 
كاتب الموضوعرسالة
الويب المصرى
الباشا صاحب المنتدى
الباشا صاحب المنتدى
الويب المصرى


عدد المساهمات : 434
تاريخ التسجيل : 14/11/2010
العمر : 37

استخدام LIKE و NOT LIKE فى WHERE clause  Empty
مُساهمةموضوع: استخدام LIKE و NOT LIKE فى WHERE clause    استخدام LIKE و NOT LIKE فى WHERE clause  Emptyالأحد نوفمبر 21, 2010 12:45 am

[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذه الصورة]


استخدام عوامل المقارنة التى تم عرضها بالموضوع السابق مع الأرقام والتواريخ والـ 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 للحقل. هذا سوف يجعلها تعمل بشكل افضل بإذن الله.

وايضا اذا كنت تريد مطابقة نص ما, وهذا النص يحتوى على علامة % او _
يجب وضع علامة \ قبلهم حتى يتم معاملتهم معاملة حرفية, بدل معالجتهم على انهم جزء من كود المقارنة.

اتمنى يكون درس اليوم بسيط واراكم بالدرس المقبل بإذن الله.
المصدر: [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
الرجوع الى أعلى الصفحة اذهب الى الأسفل
https://egypt1.forumegypt.net
 
استخدام LIKE و NOT LIKE فى WHERE clause
الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1

صلاحيات هذا المنتدى:لاتستطيع الرد على المواضيع في هذا المنتدى
منتدى العرب التعليمى :: منتدى البرمجة والتصميم والتطوير :: قسم قواعد البيانات :: قسم دورة Microsoft my SQL-
انتقل الى: