دستور BETWEEN در SQL برای انتخاب مقدارهایی که در یک بازه خاص قرار دارند، استفاده می‌شود. این مقادیر می‌توانند عدد، متن یا تاریخ باشند.

💡 نکته:
این دستور شامل مقادیر ابتدا و انتها نیز می‌شود. یعنی اگر بگوییم BETWEEN 10 AND 20، مقدارهای 10 و 20 هم در نتیجه جستجو قرار می‌گیرند.


🛒 مثال: انتخاب محصولات بر اساس قیمت

می‌خواهیم محصولاتی را که قیمت آن‌ها بین 10 تا 20 است، انتخاب کنیم:

SELECT * FROM Products
WHERE Price BETWEEN 10 AND 20;

📌 توضیح: این کوئری تمام محصولاتی را نمایش می‌دهد که قیمت آن‌ها 10 تا 20 است.

📌 ساختار کلی BETWEEN

SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2;

در کد بالا
🔹 column_name(s): نام ستون‌های مورد نظر
🔹 table_name: نام جدول
🔹 value1 و value2: مقادیر حداقل و حداکثر بازه


📋 نمونه جدول Products

جدول زیر شامل برخی از محصولات ما است:

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.05021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.05023Mexico
4Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DPUK
5Berglunds snabbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Sweden

موضوع بعدی

❌ NOT BETWEEN: انتخاب مقادیر خارج از بازه

اگر بخواهیم محصولاتی را که قیمت آن‌ها خارج از بازه 10 تا 20 است نمایش دهیم، باید از NOT BETWEEN استفاده کنیم:

SELECT * FROM Products
WHERE Price NOT BETWEEN 10 AND 20;

🔹 این کوئری محصولاتی را نشان می‌دهد که قیمتشان کمتر از 10 یا بیشتر از 20 است.


🎯 BETWEEN همراه با IN

می‌توانیم BETWEEN را با IN ترکیب کنیم. مثلا بخواهیم محصولاتی را نمایش دهیم که:
✅ قیمت آن‌ها بین 10 تا 20 باشد.
✅ و CategoryID آن‌ها 1، 2 یا 3 باشد.

SELECT * FROM Products
WHERE Price BETWEEN 10 AND 20
AND CategoryID IN (1,2,3);

🔡 استفاده از BETWEEN برای متن (Text)

BETWEEN را می‌توان برای انتخاب محدوده‌ای از نام‌های متنی هم استفاده کرد.

مثلاً کوئری زیر محصولاتی را نمایش می‌دهد که نام آن‌ها از “Carnarvon Tigers” تا “Mozzarella di Giovanni” باشد:

SELECT * FROM Products
WHERE ProductName BETWEEN 'Carnarvon Tigers' AND 'Mozzarella di Giovanni'
ORDER BY ProductName;

🔹 نتیجه: نام‌هایی که به ترتیب الفبایی بین این دو مقدار قرار دارند، انتخاب خواهند شد.


❌ NOT BETWEEN برای متون

اگر بخواهیم محصولاتی را انتخاب کنیم که نام آن‌ها خارج از بازه متنی مشخصی باشد، از NOT BETWEEN استفاده می‌کنیم:

SELECT * FROM Products
WHERE ProductName NOT BETWEEN 'Carnarvon Tigers' AND 'Mozzarella di Giovanni'
ORDER BY ProductName;

🔹 این کوئری فقط محصولاتی را نمایش می‌دهد که نام آن‌ها قبل از “Carnarvon Tigers” یا بعد از “Mozzarella di Giovanni” باشد.


📅 استفاده از BETWEEN برای تاریخ‌ها

می‌توانیم بین دو تاریخ خاص، رکوردهایی را انتخاب کنیم. مثلا اگر بخواهیم تمام سفارشاتی که بین 1 جولای 1996 تا 31 جولای 1996 ثبت شده‌اند را نمایش دهیم:

SELECT * FROM Orders
WHERE OrderDate BETWEEN '1996-07-01' AND '1996-07-31';

یا در برخی سیستم‌ها که نیاز به علامت # دارند:

SELECT * FROM Orders
WHERE OrderDate BETWEEN #07/01/1996# AND #07/31/1996#;

📋 نمونه جدول Orders

جدول زیر شامل برخی از سفارشات ثبت‌شده است:

OrderIDCustomerIDEmployeeIDOrderDateShipperID
102489057/4/19963
102498167/5/19961
102503447/8/19962
102518437/9/19961
102527647/10/19962

✅ جمع‌بندی

🔹 BETWEEN برای انتخاب مقدارهایی که در یک بازه خاص قرار دارند، استفاده می‌شود.
🔹 BETWEEN شامل ابتدا و انتهای بازه هم می‌شود.
🔹 می‌توان از آن برای اعداد، متن‌ها و تاریخ‌ها استفاده کرد.
🔹 می‌توان آن را با IN ترکیب کرد.
🔹 با استفاده از NOT BETWEEN می‌توان مقادیر خارج از بازه را فیلتر کرد.

💡 تمرین:
یک کوئری بنویسید که محصولاتی را نمایش دهد که قیمت آن‌ها بین 15 تا 25 باشد اما CategoryID آن‌ها 3 یا 4 نباشد.