2026-10-25 16:34:26
在SQL语句中排除特定区间值,核心方法是使用NOT BETWEEN,并结合AND/OR逻辑处理多区间或NULL值场景。以下是具体用法和注意事项:
一、排除单个连续区间使用NOT BETWEEN直接排除指定范围内的值。示例:从products表中选择价格不在10到20之间的产品
SELECT * FROM products WHERE price NOT BETWEEN 10 AND 20;
通过AND连接多个NOT BETWEEN条件,实现多区间排除。示例:排除价格在10-20和50-60之间的产品
SELECT * FROM products WHERE (price NOT BETWEEN 10 AND 20) AND (price NOT BETWEEN 50 AND 60);
若需排除特定离散值集合(非连续区间),可用NOT IN。示例:排除价格为10、11、12…20和50、51…60的产品
SELECT * FROM products WHERE price NOT IN (10,11,12,...,20,50,51,...,60);
NOT BETWEEN对NULL值无效(比较结果为UNKNOWN),需显式处理。问题示例:以下查询会遗漏price为NULL的记录
SELECT * FROM products WHERE price NOT BETWEEN 10 AND 20;解决方案:添加OR price IS NULL条件
SELECT * FROM products WHERE (price NOT BETWEEN 10 AND 20) OR price IS NULL;
通过合理运用上述方法,可高效实现SQL中的区间排除需求,同时确保查询结果的准确性和性能。