مشاهده نسخه کامل
: (چک کردن بزرگ یا کوچک بودن حروف)Case Sensetive در SQL
Darya-eng
13-05-2012, 23:11
اگر تا به حال امتحان کرده باشید متوجه شده اید که زمانیکه در SQL یک select برای انتخاب یک ستون با مقدار خاص بنویسیم case Sensetive(حرف بزرگ- کوچک) را چک نمیکند مثلا اگر بنویسیم:
Select * From Student where studentName=’ali'
تمام رکودها را با اسم Ali-aLI-ALI و.... را نشان می دهد
این موضوع در لاگین و.... که کوچک وبزرگ بودن حروف حائز اهمیت است مشکل اجاد م کند بنابراین از کد زیر استفاده می کنیم:
select *from Student where studentName COLLATE Latin1_General_CS_AS ='Ali'
neopersia
14-05-2012, 02:01
البته راه حل درستش اینه که موقع ایجاد جداول یا فیلد هایی که باید Case Sensetive باشند کولیشن رو براشون حساب به حروف کوچیک و بزرگ انتخاب کنید. اینطوری همون کوئری ساده هم جواب میده و نیاز به نوشتن کوئری های عجیب و قریب خیلی خیلی کمتر میشه!
Darya-eng
14-05-2012, 16:03
میتونیم هرجوری tableبسازیم اما با کوئری های مختلف نتایج دلخواه را بگیریم
پس همیشه باید راههای جدید را یادگرفت هرچند عجیب وسخت!!!!
خوبه تجارب مون را دراختیار دیگر بذاریم تاهرکسی دلش میخوادازشون استفاده کنه
neopersia
14-05-2012, 18:12
درسته دوست عزیز. منم نگفتم که این روش کلاً به درد نمیخوره اما هزینه های خاص خودش رو داره. و درستش اینه که جدول اصولی طراحی بشه
همیشه راه به قول شما جدید! راه درست نیست. برنامه نویسی هم دلبخواهی نیست. روشهای درست معمولاً مشخص هستند و فرق برنامه نویس خوب و بد اینه که برنامه نویس خوب راه درست رو انتخاب میکنه اما برنامه نویس بد هر جور دلش میخواد کد مینویسه!
Darya-eng
15-05-2012, 02:51
منظورم از هرجور این نبود که جدول رو نرمال سازی نکنیم یا نیازمندیها وقوانین رو برای طراحی ندید بگیریم بعدا بخوایم با یه کد درستش کنیم.
ولی بنده در پروژه ای در دست دارم در یکی از حالات کوچک وبزرگ بودن حروف مهم است پس کل دیتابیس را تغییر ندادم وفقط از این کد در یک procedure جدید استفاده کردم
اتفاقا چون procedure است هیچ هزینه ای ندارد ولود شدن را سخت نمیکنه برنامه سنگین نمیشه
پس نیاز داریم به این نوع کدها!!!!
اگر سرچ بفرمایید میبینید خیلی از برنامه نویسهای بد مثل بنده دارن از این روش استفاده می کنند
بهرحال ممنون از توجهتون
vBulletin , Copyright ©2000-2025, Jelsoft Enterprises Ltd.