دستور Where در Sql | سایت استوایی

دستور Where در Sql

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

آموزش رایگان Sql Server | استوایی

آموزش تصویری دستور Where در Sql


مشخصات فیلم آموزشی
تولید کننده: وب سایت استوایی
مدرس: روناک حیات غیبی
حجم: 19.7 مگابایت
مدت زمان: 08:12 دقیقه
زبان:فارسی
تاریخ انتشار: 14 فروردین 1398

توضیحات بیشتر درباره دستور Where در Sql

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

شرط در Sql | سایت استوایی
شرط در Sql | سایت استوایی

عملگرهای عبارت 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 Server |استوایی

مقایسه رشته‌ها در Sql

در بررسی رشته‌ها یا مقایسه بزرگتر یا کوچکتر بودن بر اساس دیکشنری عمل می‌کند. اگر کلمه آلفا در دیکشنری بعد از کلمه بتا قرار گرفته باشد در نتیجه آلفا از بتا بزرگتر است. در پرس‌وجو زیر کالایی که اسم آنها با حرف A شروع شده، کالایی که اسم آنها دقیقاً A باشد، کالایی که اسم آنها با B شروع شده، کالایی که اسم آنها دقیقاً B است و کالایی که اسم آن دقیقاً C است نمایش داده می‌شود. چون کالایی که اسم آنها با C شروع شده از کالایی که اسم آنها دقیقاً C است بزرگتر است پس آن کالاها در خروجی نمایش داده نمی‌شود.

select *
from production.product
where name between 'A' and 'C'

همانطور که مشاهده می‌کنید برای رشته‌ها و تاریخ از علامت سینگل کوتیشن (‘ ‘) استفاده می شود و رشته و تاریخ بر خلاف اعداد در قسمت شرط داخل سینگل کوتیشن قرار داده می‌شود.

دستور Where در اس کیو ال

اگر در دستورات از شرط استفاده نشود در خروجی تمام رکوردهای یک جدول قابل مشاهده می‌باشد برای فیلتر کردن خروجی پرس و جوها می توان از دستور Where استفاده نمود.

سرفصل های آموزش Sql

2 نظر برای دستور Where در Sql ثبت شده

  1. سلام خانم حیات غیبی چنانچه دقیقا عین همین مثال رو که زدین فقط اون قسمت where بخوایم اون عدد رو از یک تسکت باکس بگیره و براساس اون چک کنه چطوری باید عمل کنیم؟

    1. سلام. وقت شما بخیر. سوال شما مربوط به زبان های برنامه نویسی مثل C#.net هست. در این شرایط بهتر هست از Entity Framework استفاده کنید. یا مثلا یک store procedure بنویسید و … که بحث های مفصلی هستن و در کامنت ها نمیشه این موارد رو توضیح داد. همین کلمات کلیدی که گفتم رو در اینترنت جستجو کنید، منابع زیادی در این باره وجود داره.

دیدگاهتان را بنویسید

پر کردن تمام موارد زیر الزامیست