گاهی لازم است همه رکوردهای یک جدول نمایش داده نشود و تنها بعضی از رکوردها نمایش داده شود در واقع باید رکوردها را فیلتر کرد و رکوردهایی که دارای شرایط خاصی هستند را استخراج نمود برای اینکار باید بر روی پرسوجو شرطی را اعمال کرد که اعمال شرط با عبارت Where انجام میشود. در این آموزش با دستور Where در Sql آشنا خواهید شد.
در صورتیکه آموزش قبلی مربوط به دستور Select در Sql را مشاهده نکردید بهتر است که ابتدا این آموزش را مشاهده نمایید. در آموزش بعدی با عملگر Like در Sql آشنا خواهید شد.

آموزش تصویری دستور Where در Sql
توضیحات بیشتر درباره دستور Where در Sql
به هر عبارتی که ارزش منطقی (True ,False) دارد شرط گفته میشود.
در شرط میتوان از عملگرهای مساوی (=)، نامساوی (!= یا <>)، بزرگتر (<)، کوچکتر (>)، بزرگتر مساوی (=<)، کوچکتر مساوی (=>)، باقیمانده تقسیم (%)، تقسیم (/)، جمع (+)، تفریق (-)، ضرب (*)، IN (شامل)، And (و)، OR (یا) استفاده نمود. بطور مثال درصورتیکه بخواهیم کالایی را داشته باشیم که کد کالا آنها بین 700 و 800 باشد باید دو شرط بصورت زیر بنویسیم و با And از هم جدا کنیم.

عملگرهای عبارت Where
اگر بخواهید رکوردی را نمایش دهید که دقیقاً دارای مقدار مشخصی است از عملگر مساوی (=) استفاده کنید. بطور مثال کالایی که کد آن برابر با 800 است.
select ProductID,Name from production.product where ProductID=800
اما اگر بخواهید کالاهایی را نمایش دهید که کد کالای آن 800 یا 720 است به دو روش زیر میتوانید دستور را بنویسید:
- روش اول : استفاده از عملگر مساوی و OR
select ProductID,Name from production.product where ProductID=800 OR ProductID=720
- روش دوم: استفاده از عملگر IN
select ProductID,Name from production.product where ProductID IN (800,720)
درصورتیکه بخواهید کالاهایی را نمایش دهید که کد کالای آن 800 و 720 نباشد به دو روش زیر میتوانید دستور را بنویسید:
- روش اول : استفاده از عملگر نامساوی و OR
select ProductID,Name from production.product where ProductID!=800 and ProductID!=720 select ProductID,Name from production.product where ProductID<>800 and ProductID<>720
- روش دوم: استفاده از عملگر Not IN
select ProductID,Name from production.product where ProductID Not IN (800,720)
عبارت Between در Sql
برای بررسی بازهای همانند مثال بالا میتوان از Between استفاده نمود.
Select * / نام فیلدها From نام جدول Where نام فیلد between مقدار شروع and مقدار پایان
اگر مقدار شروع از مقدار پایان بزرگتر باشد خروجی نخواهیم داشت و در واقع هیچ رکوردی در خروجی مشاهده نمیشود.
در Between مقدار شروع و پایان به عنوان جواب در خروجی نمایش داده میشود و در واقع همانند عملگر بزرگتر مساوی (=<)، کوچکتر مساوی (=>) عمل میکند. درصورتیکه بررسی شرط Between برای فیلدی از نوع DateTime انجام شود و فقط تاریخ در شرط اعلام شود بصورت خودکار زمان صفر در نظر گرفته میشود. بطور مثال اگر بازه تاریخ بین “1398/01/01” تا “1398/01/05” باشد در خروجی تا زمان صفر تاریخ 1398/01/05 مشاهده خواهد شد و اطلاعات ساعت 8 صبح قابل مشاهده نیست مگر اینکه زمان را بصورت دقیق در شرط مشخص کنید با انجام اینکار خروجی تا ساعت اعلام شده نمایش داده شود.
select * from sales.salesorderdetail where ModifiedDate between '2014-03-18' and '2014-03-31'
در مثال بالا فروشهای مربوط به تاریخ 31-03-2014 نمایش داده نمیشود اگر بخواهید فروش امروز هم مشاهده کنید باید زمان تاریخ پایان را مشخص کنید.
select * from sales.salesorderdetail where ModifiedDate between '2014-03-18' and '2014-03-31 23:30:00.000'
در این حالت فروشهای روز 31-03-2014 تا ساعت 11:30 شب نمایش داده خواهد شد.

مقایسه رشتهها در Sql
در بررسی رشتهها یا مقایسه بزرگتر یا کوچکتر بودن بر اساس دیکشنری عمل میکند. اگر کلمه آلفا در دیکشنری بعد از کلمه بتا قرار گرفته باشد در نتیجه آلفا از بتا بزرگتر است. در پرسوجو زیر کالایی که اسم آنها با حرف A شروع شده، کالایی که اسم آنها دقیقاً A باشد، کالایی که اسم آنها با B شروع شده، کالایی که اسم آنها دقیقاً B است و کالایی که اسم آن دقیقاً C است نمایش داده میشود. چون کالایی که اسم آنها با C شروع شده از کالایی که اسم آنها دقیقاً C است بزرگتر است پس آن کالاها در خروجی نمایش داده نمیشود.
select * from production.product where name between 'A' and 'C'
همانطور که مشاهده میکنید برای رشتهها و تاریخ از علامت سینگل کوتیشن (‘ ‘) استفاده می شود و رشته و تاریخ بر خلاف اعداد در قسمت شرط داخل سینگل کوتیشن قرار داده میشود.
دستور Where در اس کیو ال
اگر در دستورات از شرط استفاده نشود در خروجی تمام رکوردهای یک جدول قابل مشاهده میباشد برای فیلتر کردن خروجی پرس و جوها می توان از دستور Where استفاده نمود.
سرفصل های آموزش Sql
- 01 Sql Server | نصب Sql Server 2014 رایگان 05:14
- 02 Sql Server | آموزش Sql Server رایگان 05:47
- 03 Sql Server | دستور Select در Sql رایگان 06:52
- 04 Sql Server | دستور Where در Sql رایگان 08:12
- 05 Sql Server | عملگر Like در Sql رایگان 09:42
- 06 Sql Server | دستور Order By در Sql رایگان 07:07
- 07ویتامین استوایی | آموزش رایگان Sql Server عضویت 7 فیلم آموزشی
- 08 جادوی استوایی | آموزش کامل Sql Server خرید 41 فیلم آموزشی
سلام خانم حیات غیبی چنانچه دقیقا عین همین مثال رو که زدین فقط اون قسمت where بخوایم اون عدد رو از یک تسکت باکس بگیره و براساس اون چک کنه چطوری باید عمل کنیم؟
سلام. وقت شما بخیر. سوال شما مربوط به زبان های برنامه نویسی مثل C#.net هست. در این شرایط بهتر هست از Entity Framework استفاده کنید. یا مثلا یک store procedure بنویسید و … که بحث های مفصلی هستن و در کامنت ها نمیشه این موارد رو توضیح داد. همین کلمات کلیدی که گفتم رو در اینترنت جستجو کنید، منابع زیادی در این باره وجود داره.