كيف تجعل البحث في موقع حساس لحالة الحروف search case-sensitive in asp.net

كيف تجعل البحث في موقع حساس لحالة الحروف  search case-sensitive in asp.net

المستوي الثالث مبرمج متوسط


كيف تبحث في قاعدة البيانات بحقل معين مثل كلمة المرور ويكون حساس للاحرف الصغيرة والكبيرة مثلا H ليست h .وذلك بخطوة بسيطة وسهلة


submit to reddit

كيف تجعل البحث في موقع حساس لحالة الحروف search case-sensitive in asp.net

 

 

هل دخلت موقعا ووجدت ان صفحة الدخول وكلمة المرور حساسة  لحالة الاحرف  , هل تريد ان تبحث بكلمة مثل 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

واذا عثر علي حرف صغير لن يأتي به .

 

 

يمكنك وضع هذا البحث في مقالة كيفية عمل دخول وتذكرني مدي الحياة

 http://www.citystarit.com/Article_details.aspx?id=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

 

و اذا اردت في المستقبل بعد عمل قاعدة البيانات ان يكون حساس للاحرف اجعل فقط البحث عندما تكون ضرورية وهامة مثلا ان تستخدمها في شاشة الدخول لانها تبحث بالاسم وكلمة المرور . وايضا في شاشات قد تراها هامة . ولكن لا تجعلها علي كل شئ من البداية . فقط استخدمها عند الحاجة .

 

 

#كيف تجعل البحث في موقع حساس لحالة الحروف search case-sensitive in asp.net

رابط الموضوع
http://citystarit.com/Article_details.aspx?id=132