在SQL中选择范围内的数据

介绍WHERE子句和BETWEEN条件

结构化查询语言(SQL)为数据库用户提供了创建自定义查询以从数据库中提取信息的功能。 在前面的文章中,我们探讨了使用SQL SELECT查询从数据库中提取信息 。 让我们详细讨论这个讨论,并探讨如何执行高级查询来检索符合特定条件的数据。

让我们考虑一个基于常用Northwind数据库的示例,该数据库经常随数据库产品一起提供,作为教程。

以下是数据库产品表的摘录:

产品表
产品ID 产品名称 供应商ID 单位数量 单价 库存量
1 1 10盒x 20袋 18.00 39
2 1 24 - 12盎司瓶 19.00 17
3 八角糖浆 1 12 - 550毫升的瓶子 10.00 13
4 厨师安东的Cajun调味料 2 48 - 6盎司罐子 22.00 53
厨师安东的浓汤混合 2 36盒 21.35 0
6 祖母的波森莓蔓延 3 12 - 8盎司罐子 25.00 120
7 伯伯叔叔的有机干梨 3 12 - 1磅包装。 30.00 15

简单的边界条件

我们将在查询中放置的第一个限制涉及简单的边界条件。 我们可以在SELECT查询的WHERE子句中使用由标准运算符(如<,>,> =和<=)构造的简单条件语句指定它们。


首先,让我们尝试一个简单的查询,它允许我们提取数据库中UnitPrice大于20.00的所有产品的列表:

SELECT ProductName,UnitPrice FROM Products Where UnitPrice> 20.00

这产生了四种产品的清单,如下所示:

ProductName单价------- --------厨师安东的浓汤混合21.35厨师安东的美国调味品22.00奶奶波森莓蔓延25.00叔叔Bob's有机干梨30.00

我们也可以使用带有字符串值的WHERE子句。 这基本上将字符等同于数字,其中A表示值1,Z表示值26.例如,我们可以使用以下查询显示名称以U,V,W,X,Y或Z开头的所有产品:

SELECT ProductName FROM products WHERE ProductName> ='T'

这产生了结果:

产品名称------- Bob叔叔的有机干梨

使用边界表示范围

WHERE子句还允许我们通过使用多个条件在值上实现范围条件。 例如,如果我们想要采用上述查询并将结果限制为价格介于15.00和20.00之间的产品,则可以使用以下查询:

SELECT ProductName,UnitPrice FROM Products WHERE UnitPrice> 15.00 AND UnitPrice <20.00

这产生如下所示的结果:

ProductName单价------- -------- Chai 18.00 Chang 19.00

用BETWEEN表达范围

SQL还提供了一种快捷方式BETWEEN语法,可以减少我们需要包含的条件数量并使查询更具可读性。 例如,不是使用上面的两个WHERE条件,我们可以将相同的查询表示为:

SELECT ProductName,UnitPrice FROM产品单价在15.00和20.00之间

与我们的其他条件子句一样,BETWEEN也适用于字符串值。 如果我们想生成一个以V,W或X开头的所有国家的列表,我们可以使用查询:

SELECT ProductName FROM产品WHERE ProductName BETWEEN“A”和“D”

这产生了结果:

产品名称-------八角糖浆Chai Chang厨师​​Anton's Gumbo Mix厨师Anton's Cajun调味料

WHERE子句是SQL语言的一个强大部分,它允许您将结果限制为落在指定范围内的值。 它通常用于帮助表达业务逻辑,并应该成为每个数据库专业人员工具箱的一部分。

将常用子句合并到存储过程中以使其可以在没有SQL知识的情况下访问它们通常很有帮助。