كيف تبحث في قاعدة البيانات بحقل معين مثل كلمة المرور ويكون حساس للاحرف الصغيرة والكبيرة مثلا H ليست h .وذلك بخطوة بسيطة وسهلة
هل دخلت موقعا ووجدت ان صفحة الدخول وكلمة المرور حساسة لحالة الاحرف , هل تريد ان تبحث بكلمة مثل Hisham بحالة احرف كبيرة وصغيرة معا
دعونا نأخذ بعض الامثلة علي الكلمات
Hisham
hisham
hishaM
hisham
كلهم نفس الاسماء لكن بعض الحروف كابتل هنا والبعض الاخر صمول ناك او حروف صغيرة وحروف كبيرة
هنا نأتي لما يسمي بال collision in sql server
ما هو الكوليجن collision
تظهر بداية الكوليجن عند تنصيب السيكوال سيرفر فتظهر شاشة تخيرك بنوع الكوليجن الذي تختارهوهو اللغة الخاصة بالسيكوال سيرفر وبالبيانات التي بداخله .
عربي- انجليزي- فرنسي .... وهكذا
في هذه الشاشة تختار الاختيار الاساسي وهو
SQL_Latin1_General_CP1_CI_AS
وهذا النوع ليست حساسة لحالة الاحرف عند العمل علي السيكوال سيرفر بمعني
ان H هي نفس الحرف الصغير h
النوع المشابه ولكن حساس لحالة الاحرف
SQL_Latin1_General_CS_AS
حيث ان H تختلف عن حرف h
لكن لا ننصح بها لكامل قاعدة البيانات وسيتضح ذلك في المقالة الان
اين تظهر الكوليجن collision
1- تظهر عند تنصيب السيكوال سيرفر علي الكمبيوتر وبذلك تكونه لكل قواعد البيانات التي سوف تنشأئها في المستقبل . ويمكن طبعا التعديل عليها عندما تنشأ قاعدة بيانات جديدة .
2- تظهر عند انشاء قاعدة بيانات جديدة علي السيكوال سيرفر حيث يوجد اختيار اسمه
Option ---- Collision
وهنا تستطيع ان تغير اسم الكوليجن .
3- ايضا تستطيع ان تغير الكوليجن الخاص بحقل معين داخل جدول ..
نأتي الان لنقطة الموضوع
كيف نجعل البحث حساس لحالة الاحرف
جملة الاستعلام العادية هي
SELECT name FROM users WHERE name = 'H'هنا لو وجد الحرف او الاسم كابتل او حتي صمول بحروف صغيره سيأتي بنتيجة ولا يهمه اذا كانت الحروف كبيرة او صغيرة .
الان سوف نعمل جملة استعلام حساسة لحالة الاحرف
SELECT name FROM users WHERE name COLLATE Latin1_General_CS_AS= 'H'
هنا وضعت ان البحث حسب حالة الاحرف من خلال
COLLATE Latin1_General_CS_AS
وذلك بعد اسم الحقل المراد البحث بداخله . وبالتالي سوف يبحث فقط في H
واذا عثر علي حرف صغير لن يأتي به .
يمكنك وضع هذا البحث في مقالة كيفية عمل دخول وتذكرني مدي الحياة
https://www.vodlara.com/topic/64
حيث تضع فقط هذا السطر
COLLATE Latin1_General_CS_AS
مثلما فعلنا بالاعلي .
كيف تغير حقل الي كوليجن معين بداخل جدول
افتح السيكوال ثم اكتب هذه الجملة
ALTER TABLE
users
ALTER COLUMN
user_name
NVARCHAR
(
50
)
COLLATE Latin1_General_CS_AS
اي عدل في الجدول الذي يسمي المستخدمين حقل الاسم الي الكوليجن من نوع كذا
نصيحة في اختيار الكوليجن
عند تنصيب السيكوال سيرفر لاول مرة علي جهاز اختر الخيار العادي للغة الانجليزية بدون ان يكون حساس لحالة الاحرف SQL_Latin1_General_CP1_CI_AS
و اذا اردت في المستقبل بعد عمل قاعدة البيانات ان يكون حساس للاحرف اجعل فقط البحث عندما تكون ضرورية وهامة مثلا ان تستخدمها في شاشة الدخول لانها تبحث بالاسم وكلمة المرور . وايضا في شاشات قد تراها هامة . ولكن لا تجعلها علي كل شئ من البداية . فقط استخدمها عند الحاجة .