BETWEEN للنطاقات
استخدم BETWEEN للنطاقات الشاملة العددية ونطاقات التواريخ، واعرف متى تفضّل المقارنتين الصريحتين >= و< للفواصل نصف المفتوحة.
BETWEEN للنطاقات درس مجاني في SQL Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في SQL Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة SQL Academy 4 دروس في المجموع.
BETWEEN شامل
يطابق BETWEEN a AND b القيم التي تحقق x >= a AND x <= b. كلا الحدّين مشمول.
SELECT * FROM orders WHERE total BETWEEN 100 AND 500;
-- equivalent to:
SELECT * FROM orders WHERE total >= 100 AND total <= 500;نطاقات التواريخ
يعمل BETWEEN مع التواريخ والطوابع الزمنية أيضًا:
SELECT * FROM orders
WHERE created_at BETWEEN '2024-01-01' AND '2024-12-31';مشكلة الحدّ الشامل
عند استخدام عمود TIMESTAMP، ينتهي BETWEEN '2024-12-31' عند منتصف الليل في اليوم 31، وليس عند نهاية اليوم. لذلك تُستبعد الطلبات الموضوعة في الساعة 14:00 من 31 ديسمبر.
-- WRONG — misses orders later on Dec 31:
WHERE created_at BETWEEN '2024-12-01' AND '2024-12-31';
-- RIGHT — half-open interval:
WHERE created_at >= '2024-12-01'
AND created_at < '2025-01-01';يُفضّل استخدام الفواصل الزمنية نصف المفتوحة
النمط نصف المفتوح >= start AND < next_period لا يترك مجالًا للالتباس، ويعمل مع أي دقة، ويتسلسل طبيعيًا مع الفترات المتتالية.
WHERE created_at >= date_trunc('month', NOW())
AND created_at < date_trunc('month', NOW()) + INTERVAL '1 month';NOT BETWEEN
عكس BETWEEN — يستبعد النطاق:
SELECT * FROM products WHERE price NOT BETWEEN 10 AND 20;
-- equivalent to: price < 10 OR price > 20استعلامات النطاق والفهارس
يساعد فهرس B-tree في استعلامات النطاق. وتستخدم الفهارس المركبة عمود النطاق في الموضع الأخير للحصول على أفضل انتقائية:
CREATE INDEX orders_user_total_idx ON orders (user_id, total);
-- Efficient: equality on user_id, range on total
SELECT * FROM orders
WHERE user_id = 42 AND total BETWEEN 100 AND 500;السلاسل النصية وBETWEEN
يقارن BETWEEN السلاسل النصية ترتيبًا معجميًا. انتبهوا إلى حالة الأحرف:
SELECT * FROM users WHERE last_name BETWEEN 'A' AND 'C';
-- Includes 'Adams' and 'Bond', excludes 'C' itself only if 'C' < 'Ca...'أنواع النطاق (PostgreSQL)
يوفر PostgreSQL أنواع نطاق مخصصة للفواصل نصف المفتوحة:
SELECT int4range(10, 20) @> 15; -- true (15 in [10,20))
SELECT tsrange('2024-01-01', '2025-01-01') @> NOW()::TIMESTAMP;التحقق من النطاقات باستخدام CHECK
تأكدوا من أن start <= end وقت الإدراج:
CREATE TABLE bookings (
id BIGSERIAL PRIMARY KEY,
start_at TIMESTAMPTZ NOT NULL,
end_at TIMESTAMPTZ NOT NULL,
CHECK (start_at < end_at)
);تجميع القيم الرقمية في نطاقات
ادمجوا BETWEEN مع CASE لإنشاء نطاقات:
SELECT id, total,
CASE
WHEN total BETWEEN 0 AND 99 THEN 'small'
WHEN total BETWEEN 100 AND 999 THEN 'medium'
ELSE 'large'
END AS bucket
FROM orders;BETWEEN SYMMETRIC
امتداد لمعيار SQL لا يهتم بأي الجانبين أصغر:
SELECT 5 BETWEEN SYMMETRIC 10 AND 1; -- TRUEمراجعة
يُعد BETWEEN اختصارًا مناسبًا للنطاقات الشاملة.
- انتبهوا إلى حدود الطوابع الزمنية — ويُفضّل استخدام النطاق نصف المفتوح
>= start AND < end - تسرّع الفهارس المركبة استعلامات النطاق
- تفرض قيود CHECK صحة النطاقات
تحقق سريع
هل كلا حدي BETWEEN a AND b مشمولان في SQL القياسي؟
الأسئلة الشائعة
هل درس «BETWEEN للنطاقات» مجاني؟
نعم — نص درس «BETWEEN للنطاقات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة SQL Academy، انتقل إلى CoddyKit PRO. تتضمن دورة SQL Academy 4 دروس في المجموع.
ماذا ستتعلم في «BETWEEN للنطاقات»؟
استخدم BETWEEN للنطاقات الشاملة العددية ونطاقات التواريخ، واعرف متى تفضّل المقارنتين الصريحتين >= و< للفواصل نصف المفتوحة. تتمرن على SQL Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ SQL Academy؟
لا تُشترط خبرة سابقة. SQL Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «BETWEEN للنطاقات»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس SQL Academy هذا؟
نعم. كل درس في SQL Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.