جزء WHERE در دستور SELECT
برای فیلتر کردن رکوردها بر اساس شرایط خاص استفاده میشود. این جزء به شما امکان میدهد فقط رکوردهایی را بازیابی کنید که شرایط خاصی را برآورده میکنند.
نحوه نگارش (Syntax) جزء WHERE
ساختار کلی جزء WHERE در SQL به شکل زیر است:
SELECT column1, column2, ...
FROM table_name
WHERE condition;
اپراتورهای متداول در جزء WHERE
اپراتورهای مقایسهای:
=
: مساوی
<>
یا !=
: نامساوی
<
: کوچکتر از
<=
: کوچکتر یا مساوی
>
: بزرگتر از
>=
: بزرگتر یا مساوی
مثال: انتخاب دانشجویانی که بعد از 2000-01-01
به دنیا آمدهاند
SELECT * FROM Students WHERE BirthDate > #2000-01-01#;
مثال: انتخاب دانشجویانی که نام خانوادگی آنها برابر با ‘رضا زاده’ است
SELECT StudentID, FirstName, LastName, NationalCode, BirthDate
FROM Students
WHERE LastName = 'رضا زاده';
اپراتورهای منطقی:
AND
: هر دو شرط باید درست باشند.OR
: حداقل یکی از شرطها باید درست باشد.NOT
: شرط نباید درست باشد.
مثال: انتخاب دانشجویانی که بعد از 2000-01-01
به دنیا آمدهاند و نام کوچک آنها احمد باشد.
SELECT * FROM Students
WHERE BirthDate > #2000-01-01# AND FirstName = 'احمد';
مثال: انتخاب دانشجویانی که بعد از 2000-01-01
به دنیا آمدهاند یا نام کوچک آنها احمد نباشد.
SELECT * FROM Students
WHERE BirthDate > #2000-01-01# OR FirstName <> 'احمد';
اپراتور IN:
- برای بررسی اینکه آیا یک مقدار در مجموعهای از مقادیر قرار دارد یا خیر؟
مثال: انتخاب دانشجویانی که نام خانوادگی آنها احمدی یا حسینی یا کریمی باشد.
SELECT * FROM Students
WHERE LastName IN ('احمدی', 'حسینی', 'کریمی');
اپراتور IN شکل ساده شده اپراتور منطقی OR میباشد. دستور SQL بالا و پایین نتایج یکسانی خواهند داشت.
SELECT * FROM Students
WHERE LastName = 'کریمی' OR LastName = 'حسینی' OR LastName = 'احمدی';
اپراتور BETWEEN
برای بررسی اینکه آیا یک مقدار یک فیلد در بازه انتخابی قرار دارد یا خیر.
اپراتور BETWEEN و انتخاب بین دو تاریخ:
مثال: انتخاب دانشجویانی که تاریخ تولد آنها بین 2000-01-01
و 2005-12-31
باشد.
SELECT StudentID, FirstName, LastName, NationalCode, BirthDate
FROM Students
WHERE BirthDate BETWEEN #2001-01-01# AND #2005-12-31#;
اپراتور BETWEEN و انتخاب بین دو عدد:
مثال: انتخاب کالاهایی که قیمت آنها بین 1000 تا 10000 باشد.
SELECT * FROM Products
WHERE Price BETWEEN 1000 AND 10000;
اپراتور BETWEEN و انتخاب بین مقادیر متنی:
اپراتور BETWEEN برای مقادیر متنی نیز کاربرد دارد. در این حالت ردیفهایی که از لحاظ الفبایی بین دو مقدار انتخابی باشند انتخاب خواهند شد.
مثال: انتخاب دانشجویانی که نام خانوادگی آنها بین احمدی و جمشیدی قرار دارد.
SELECT * FROM Students
WHERE LastName BETWEEN 'احمدی' AND 'جمشیدی';
اپراتور LIKE
برای جستجوی الگوهای خاص در دادههای متنی استفاده میشود.
%
جایگزین صفر یا بیشتر کاراکتر_
جایگزین یک کاراکتر
مثال: انتخاب دانشجویانی که نام آنها با م
شروع میشود.
SELECT * FROM Students
WHERE FirstName LIKE 'م%';
مثال: انتخاب دانشجویانی که نام خانوادگی آنها به ی
ختم میشود.
SELECT * FROM Students
WHERE LastName LIKE '*ی';
مثال: انتخاب دانشجویانی که نام خانوادگی آنها با م
شروع و به ی
ختم میشود.
SELECT * FROM Students
WHERE LastName LIKE 'م*ی';
عملکرد عملگر Like در اکسس SQL مشابه عملکرد Like در VBA میباشد. اطلاعات بیشتر درباره عملگر Like را میتوانید در این صفحه مشاهده نمایید.
اپراتور IS NULL و IS NOT NULL
- برای بررسی اینکه آیا یک ستون مقدار NULL دارد یا خیر.
مثال: انتخاب ردیفهایی که مقدار فیلد BirthDate آنها تکمیل نشده است.
SELECT * FROM Students
WHERE BirthDate IS NULL;
مثال: انتخاب ردیفهایی که مقدار فیلد BirthDate آنها تکمیل شده است.
SELECT * FROM Students
WHERE BirthDate IS NOT NULL;
توجه داشته باشید که مقدار NULL با مقدار یک رشته خالی تفاوت دارد. اگر یک فیلد حاوی رشته خالی باشد مقدار NULL درباره آن صدق نخواهد کرد و در نتایج پرسوجو نمایش داده نخواهد شد. برای نمایش رشتههای خالی و مقادیر NULL با هم میتوانید با استفاده از عملگر منطقی OR نتیجه صحیح را مشاهده نمایید.
مثال: انتخاب ردیفهایی که مقدار فیلد FirstName آنها تکمیل نشده یا خالی میباشد.
SELECT * FROM Students
WHERE FirstName IS NULL OR FirstName = '';
ترکیب عملگرها
در خیلی از مواقع استفاده از یک عملگر یا اپراتور به تنهایی پاسخگوی نیاز برنامهنویس نمیباشد. در این مواقع میتوانیم با ادغام عملگرها به نتیجه دلخواه برسیم.
مثال: انتخاب دانشجویانی که کد ملی آنها با 065 شروع میشود و تاریخ تولد آنها بعد از تاریخ 2005-12-31
میباشد.
SELECT *
FROM Students
WHERE NationalCode Like "065#######" AND BirthDate > #12/31/2005#;
نکات مهم درباره ادغام عملگرها
- ترتیب شرایط: زمانی که از چند شرط در
WHERE
استفاده میکنید، ترتیب آنها و استفاده از پرانتزها برای گروهبندی شرطها میتواند روی نتایج تاثیر بگذارد. برای یادگیری ترتیب عملگرها میتوانید این صفحه را مشاهده نمایید. - بهینهسازی پرس و جو: استفاده از شاخصها (Indexes) میتواند به بهبود کارایی پرس و جوهایی که از
WHERE
استفاده میکنند، کمک کند.
نتیجهگیری
جزء WHERE
در SQL به شما این امکان را میدهد که به طور دقیق رکوردهایی را که نیاز دارید، بازیابی کنید. با استفاده از اپراتورهای مختلف و ترکیب آنها، میتوانید فیلترهای پیچیدهای ایجاد کنید که به شما در مدیریت دادهها کمک میکنند. امیدواریم این آموزش به شما در فهم بهتر و استفاده موثرتر از جزء WHERE
کمک کند.