فیلتر کردن نتایج با استفاده از بند WHERE
در این درس با استفاده از بند where خواهیم توانست، در sql سطرها را بر اساس مقدار موجود در یک ستون خاص فیلتر کنیم. این نوع از فیلتر کردن میتواند هم بر اساس رشته های متنی، عددی و یا تاریخ و زمان باشد که برای برگرداندن هر کدام از این موارد باید نکاتی را در دستورات آن رعایت کنیم که بطور کامل اصول انجام این فرامین آموزش داده شده است.
جدول محتوا
مشاهده نتایج حاصل از فیلتر اطلاعات یک جدول در کوئری SQL
در حال حاضر نگاهی به نتایج فیلتر شده که توسط select query برای ما برگردانده شد، میاندازیم. نتایج فیلتر کردن، این است که رکوردهایی را، مطابق با معیارهای خاصی که ما از آن خواسته بودیم، به ما برگرداند.
اینجا ما در Management Studio، با یک new query شروع میکنیم.
ما با چیزی بسیار شبیه به آنچه که در مثال قبلی کار کردیم، شروع میکنیم.
جایی که، ما 4 ستون از HumanResources.Employee را انتخاب میکنیم و اگر ما آنرا اجرا کنیم، نتایج را در سمت راست و پایین، مشاهده میکنیم.
که خیلی پایینتر، اینجا سمت راست، همانطور که میبینید 290 سطر را این دستور به ما برگرداند.
اینها، همه سطرهای جدول هستند.
فیلتر اطلاعات با استفاده از بند WHERE
حالا ما یک بند و شرط دیگر برای فیلتر کردن سطرهای خاص، به دستور اضافه میکنیم.
این مجموعه سطرها، فهرستی از کارمندان و ساعات تعطیلی آنها است که برای ما تنظیم و قابل بهره برداری از میان این همه سطر و ستون میشود.
حالا میخواهیم افرادی را که ساعات تعطیلی آنها بیشتر از یک مقدار خاصی است را انتخاب کنیم. بنابراین برای اینکه اینرا انجام بدهیم، باید کلمه کلیدی where را به پایان دستور sql اضافه کنیم.
سپس لیستی از نام ستونهایی که دوست داریم عملیات فیلتر ما روی آنها انجام شود را جستجو میکنیم، که در این مورد VacationHours را مینویسیم و بعد از آن مقداری را برای آن جستجو میکنیم، مثلاً هر چیزی که بزرگتر از 40 باشد.
بنابراین ما باید دستور select را مانند قبل بگذاریم و در پایان WHERE VacationHours > 40 را اضافه کنیم.
آنرا اجرا میکنم و ایندفعه میبینم که 178 سطر را برمیگرداند.
اگر میان سطرها حرکت کنم و کمی آنها را بررسی کنم، میبینم که واقعاً آنها مقداری بزرگتر از 40 برای VacationHours. دارند.
اصول کار با علامت های بزرگتر، کوچکتر و مساوی در sql server
همچنین ممکن است که در لیست خود بخواهیم چیزهایی را که بزرگتر یا برابر با 40 هستند را جستجو کنیم.
برای اینکار علامت برابر را سمت راست بعد از علامت بزرگتر قرار میدهیم و دوباره اجرا میکنیم.
اینبار خروجی ما 181 سطر است.
ردیف ششم جایی است که VacationHours دقیقاً برابر با 40 است.
بین VacationHours و هر مقدار، میتوانیم علامتهایی مثل بزرگتر از، کوچکتر از و یا برابر قرار دهیم. توجه داشته باشید که اگر بخواهید علامت بزرگتر مساوی قرار دهید، باید علامتها را در همین جهت قرار دهید.
برای مثال ، اگر اول علامت مساوی و بعد علامت بزرگتر از، را قرار دهید؛ یک خطا نحوی یا یک syntax error برمیگرداند.
چیزی که من فهمیدم خیلی تعجب آور است. منطور من این است که دستگاه میداند که دقیقاً من برای انجام چه کاری دارم تلاش میکنم، ولی این را میخواهد که علامتها را در یک نظم خاصی قرار دهم.
بنابراین علامت بزرگتر از، اول باید قرار بگیرد و بعد از آن علامت مساوی قرار بگیرد.
و اگر اینطور باشد که خوب کار میکند.
فیلتر داده از نوع تاریخ در اس کیو ال سرور
در این یک فیلد عدد صحیح است، پس باید با مقدار 40 بدون هیچ علامت نقطه گذاری مقایسه شود. به هر حال، زمانی که فیلدهایی را که میخواهیم فیلتر کنیم نوع آنها تاریخ (date) یا رشته (string) است؛ باید یک علامت نقطه گذاری در اینجا قرار دهید.
اجازه دهید برای مثال بند where را برای فیلتر کردن روز تولد تغییر دهم.
مثلاً به ما بگویند WHERE BirthDate > 01-01-1970 باشد و اگر ما آنرا درست مثل این اجرا کنیم، به ما خطا میدهد و میگوید که باید تاریخ را در کوتیشن تکی قرار دهیم. برای این منظور یک تک کوتیشن قبل از آن و یکی بعد از آن قرار میدهیم و دوباره اجرا میکنیم و باید ایندفعه به خوبی اجرا شود.
حالا برای ما سطرهایی که تاریخ تولد آنها بیشتر از BirthDate > 01-01-1970 است را برمیگرداند
فیلتر داده های از نوع متن
و اگر یک رشته یا متن را هم بخواهیم جستجو کنیم، مثل JobTitle باید آنرا هم به طور مشابه درتک کوتیشن قرار دهیم.
ما جستجو میکنیم WHERE JobTitle = ‘Tool Designer’ که همانطور که دیدیم tool designer داخل تککوتیشن است.
یعنی ما در این دستور الان خواستیم که از میان شغلها حرفه tool designer را برای ما فیلتر کند که دو سطر را برای ما بر میگرداند.
فقط دو کارمند هستند که عنوان کاری آنها tool designer است.
بنابراین با استفاده از بند where میتوانیم هر دستور sql را داشته باشیم و سطرها را بر اساس مقدار در یک ستون خاص برگردانیم.