在 SQL Server 中,AND 和 OR 等逻辑运算符将用于 WHERE 子句,以对 SELECT 语句返回的记录应用更多筛选器。
SQL AND、OR 运算符示例:我们想在亚马逊网站上订购鞋子。 当我们在搜索栏中输入“鞋子”时,它会显示成千上万双鞋子。 然而,要挑选一双鞋,我们必须使用各种筛选器,例如价格在 2000 到 2500 之间,品牌=Nike 或 Adidas,尺码=9。
如果我们使用上述筛选器,它将显示符合上述要求的鞋子,以便我们轻松选择。 让我们看看内部发生了什么(针对亚马逊数据库的查询)。 SQL Server 逻辑 AND OR 运算符的查询将如下所示
SELECT [Product Name], [Size], [Brand], [Price], [Discount]
FROM [Products_table]
WHERE ([Product Name] = 'Shoes') AND
(Brand = 'Nike' OR 'Adidas') AND
([Size] = 9) AND
([Price] BETWEEN 2000 AND 2500)
从上面的查询中,可以观察到我们使用了逻辑 AND、OR 运算符来应用多个筛选器。 让我们看看如何在 WHERE 子句 中使用逻辑 AND 和 OR 运算符,以便在提取数据之前使用 SELECT 语句进行筛选。 我们将使用下面显示的数据通过示例来解释 AND 和 OR 运算符。

SQL Server AND & OR 运算符示例
以下是逻辑 AND 和 OR 示例列表。
AND 运算符
AND 运算符用于在 WHERE 子句中测试多个条件。 只有当所有条件都为 TRUE 时,SELECT 语句才会显示记录。
SELECT [FirstName]
,[LastName]
,[YearlyIncome]
,[Education]
,[Occupation]
FROM [Customer]
WHERE [Education] = 'Bachelors' AND
[Occupation] = 'Professional'
上述语句将检索 Customer 表中所有教育程度恰好为“学士”且职业恰好为“专业人士”的客户。

让我们使用逻辑 AND 应用三个条件。
SELECT [FirstName]
,[LastName]
,[YearlyIncome]
,[Education]
,[Occupation]
FROM [Customer]
WHERE [Education] = 'Bachelors' AND
[Occupation] = 'Professional' AND
[YearlyIncome] = 70000
上述语句选择 Customer 表中所有教育程度恰好为“学士”,职业恰好为“专业人士”的客户记录。 此外,他的年收入恰好为 70000。

SQL Server OR 运算符
OR 运算符用于在 WHERE 子句中测试多个条件。 如果任何一个条件为 TRUE,它就会显示记录。
让我们使用 OR 运算符对单个列(即职业)应用筛选器
SELECT [FirstName]
,[LastName]
,[YearlyIncome]
,[Education]
,[Occupation]
FROM [Customer]
WHERE [Occupation] = 'Management' OR
[Occupation] = 'Professional'
之前的语句将获取 Customer 表中所有职业为“管理”或“专业人士”的客户。

让我们使用逻辑 OR 对多个列应用筛选器。
SELECT [FirstName]
,[LastName]
,[YearlyIncome]
,[Education]
,[Occupation]
FROM [Customer]
WHERE [Occupation] = 'Professional' OR
[YearlyIncome] >= 60000
如果 Customers 表中的客户职业为“专业人士”,或者年收入大于或等于 60000,则上述语句将检索所有这些客户。

从上面的截图可以看出,尽管我们要求的是“专业人士”,但由于年收入大于或等于 60000,因此它也显示了“管理”和“技术体力劳动者”的客户。
SQL 组合 AND、OR 运算符
通常,我们可以组合 AND 和 OR 运算符来应用复杂的筛选器。 但是,您必须使用括号。 如果我们忘记了括号,结果将会是错误的。 请注意。
SELECT [FirstName]
,[LastName]
,[YearlyIncome]
,[Education]
,[Occupation]
FROM [Customer]
WHERE ([Occupation] = 'Professional' OR
[Occupation] = 'Management') AND
[YearlyIncome] >= 70000
上述语句将检索 Customer 表中所有职业为“管理”或“专业人士”的客户。 此外,他的年收入大于或等于 70000。

让我们更改查询中 AND 和 OR 运算符的位置以检查结果。
SELECT [FirstName]
,[LastName]
,[YearlyIncome]
,[Education]
,[Occupation]
FROM [Customer]
WHERE ([Occupation] = 'Professional' AND
[Education] = 'Bachelors') OR
[YearlyIncome] >= 60000
