0Pricing
SQL Academy · บทเรียน

BETWEEN สำหรับช่วงค่า

ใช้ BETWEEN กับช่วงตัวเลขและวันที่แบบรวมปลายทั้งสองด้าน และรู้ว่าเมื่อใดควรใช้การเปรียบเทียบ >= และ < อย่างชัดเจนสำหรับช่วงเปิดด้านหนึ่ง

BETWEEN สำหรับช่วงค่า เป็นบทเรียน SQL Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 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 ใช้กับวันที่และ timestamp ได้เช่นกัน:

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 เป็นรูปแบบย่อที่สะดวกสำหรับช่วงแบบรวมค่าขอบเขต

  • ระวังค่าปลายของ timestamp — ควรใช้ช่วงเปิดครึ่งหนึ่ง >= start AND < end
  • ดัชนีประกอบช่วยเร่งการค้นหาช่วง
  • ข้อจำกัด CHECK บังคับใช้ช่วงที่ถูกต้อง

ตรวจสอบความเข้าใจ

ค่าปลายทั้งสองด้านของ BETWEEN a AND b รวมอยู่ด้วยใน SQL มาตรฐานหรือไม่

คำถามที่พบบ่อย

บทเรียน “BETWEEN สำหรับช่วงค่า” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “BETWEEN สำหรับช่วงค่า” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส SQL Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส SQL Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “BETWEEN สำหรับช่วงค่า”

ใช้ BETWEEN กับช่วงตัวเลขและวันที่แบบรวมปลายทั้งสองด้าน และรู้ว่าเมื่อใดควรใช้การเปรียบเทียบ >= และ < อย่างชัดเจนสำหรับช่วงเปิดด้านหนึ่ง คุณปฏิบัติ SQL Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน SQL Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน SQL Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “BETWEEN สำหรับช่วงค่า” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน SQL Academy นี้ได้ไหม

ได้ บทเรียน SQL Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. รูปแบบ LIKE และอักขระแทน
  2. IN และ NOT IN สำหรับชุดค่า
  3. BETWEEN สำหรับช่วงค่า
  4. IS NULL, IS NOT NULL และ COALESCE
← กลับไปที่ SQL Academy