⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

SQL BETWEEN 范围查询

学习 BETWEEN 和 NOT BETWEEN · 难度:入门 · +10XP

SQL BETWEEN 范围查询

在日常数据查询中,经常需要筛选落在某个数值区间日期范围内的记录。例如查询分数在 70 到 90 之间的学生,或者查询 2024 年 1 月到 6 月的订单。SQL 提供了 BETWEEN 操作符来优雅地表达范围查询,比写两个比较条件更加简洁易读。

BETWEEN 基本语法

BETWEEN 用于判断一个值是否在指定的闭区间(包含边界值)内:

SELECT 列名 FROM 表名 WHERE 列名 BETWEEN 下限 AND 上限;

这等价于:

SELECT 列名 FROM 表名 WHERE 列名 >= 下限 AND 列名 <= 上限;

数值范围查询

-- 查询分数在70到90之间(含70和90)的学生
SELECT * FROM students WHERE score BETWEEN 70 AND 90;

-- 查询年龄不在20到25之间的学生 SELECT * FROM students WHERE age NOT BETWEEN 20 AND 25;

-- 结合其他条件 SELECT * FROM students WHERE score BETWEEN 70 AND 90 AND age < 22;

日期范围查询

BETWEEN 在日期查询中尤为常用:

-- 查询2024年的订单
SELECT * FROM orders WHERE order_date BETWEEN '2024-01-01' AND '2024-12-31';

-- 查询最近7天的数据 SELECT * FROM logs WHERE log_date BETWEEN DATE('now', '-7 days') AND DATE('now');

字符串范围查询

BETWEEN 也可以用于字符串(按字典序比较):

-- 查询姓名以A到M开头的学生
SELECT * FROM students WHERE name BETWEEN 'A' AND 'M';

-- 查询产品编号在指定范围 SELECT * FROM products WHERE code BETWEEN 'P001' AND 'P100';

BETWEEN vs >= AND <=

特性BETWEEN>= AND <=
可读性更直观、更接近自然语言较冗长
边界闭区间(包含两端)包含两端
性能优化器通常同等处理同等
灵活性只能做闭区间判断可做开区间 > <

注意事项

  1. BETWEEN 的边界顺序必须是小值 AND 大值,写反会导致空结果:BETWEEN 90 AND 70 永远返回 0 行
  2. NOT BETWEEN 排除的是闭区间内的值,即不包含边界
  3. 对于 NULL 值,BETWEEN 的结果永远是 NULL(未知),不会返回该行
  4. 日期比较时注意时区和格式一致性

实战任务

  1. 查询分数在 60 到 80 之间的所有学生
  2. 查询年龄不在 18 到 25 之间的学生
  3. 查询 2026 年 1 月到 3 月注册的用户
Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 146 篇
0 完成
🔥 0