限制记录集中的记录

使用 WHERE 子句限制记录集中的记录数。例如,可能只希望包含年薪高于 50,000 美元的那些客户。假设表中有名为 Earnings 的列,该列列出了每位客户的收入。所使用的 SELECT 语句应如下所示:

SELECT YearBorn, DateLastPurchase FROM Customers 
WHERE Earnings > 50000

可以在 WHERE 子句中指定一个或多个条件,以筛选出数据库中的记录。以下章节描述使用 WHERE 子句筛选记录的方法:

根据两个值是否相等筛选记录

可以根据参数的值与记录列的值是否相等来筛选数据库中的记录。

假设决定让用户按部门搜索数据库。则必须满足下列逻辑关系才能生成搜索结果记录集:

可以使用下面的 WHERE 子句表示这种逻辑:

WHERE ColumnName = ParameterValue

ParameterValue 是包含搜索参数的 SQL 变量。在 Web 应用程序中,用户通常使用 HTML 表单提供此参数。

可以完全用 SQL 表达这种数据库查询,如下所示:

SELECT FIRSTNAME, LASTNAME, DEPARTMENT, EMAIL
FROM EMPLOYEES
WHERE DEPARTMENT = 'varDept'

此 SQL 语句在雇员表中查找 DEPARTMENT 值等于 varDept 变量中所包含值的所有记录。例如,如果用户指定 Operations 作为部门名称,则该 SQL 语句可能生成下列记录集:



根据两个值之间的相似性筛选记录

可以根据参数值与记录列的值的相似性,对数据库中的记录进行筛选。

在指定搜索参数的值时,使用相似性而不是相等性,可以给予用户更大的灵活性。例如,搜索字不需要区分大小写。如果用户输入 ohio,而表列中包含值 Ohio,则产生匹配。

而且,相似性允许使用通配符,以便用户可以搜索字母或搜索单词中的一部分。例如,如果用户输入 m,而且表列中包含值 Morgan、Macy 和 Michelson,则可在 SQL 语句中使用通配符,从而与所有这三个项匹配。

标准通配符是百分号 (%):

...WHERE LastName LIKE 'Mc%'

假设决定让用户按姓氏搜索数据库。则必须满足下列逻辑关系才能生成搜索结果记录集:

可以使用下面的 WHERE 子句表示这种逻辑:

WHERE ColumnName LIKE ParameterValue

ParameterValue 是包含搜索参数的 SQL 变量。在 Web 应用程序中,用户通常使用 HTML 表单提供此参数。

可以完全用 SQL 表达这种数据库查询,如下所示:

SELECT FIRSTNAME, LASTNAME, DEPARTMENT, EMAIL
FROM EMPLOYEES
WHERE DEPARTMENT LIKE 'varLastName'

如果要使用户能够搜索部分单词,可组合使用变量和通配符。这种情况下使用的 SQL 通配符是百分号 (%)。这里提供了一个示例:

...WHERE LASTNAME LIKE 'varLastName%'

例如,如果用户键入 s 作为搜索参数,则姓氏以字母 s 开头的所有记录都包含在记录集中,如下面的示例所示:



如果用户指定 sm 作为搜索参数,则只有姓氏以字母 sm 开头的那些记录包含在记录集中:



根据值的范围筛选记录

可以根据记录列的值是否在两个参数值的范围之间来筛选数据库中的记录。

假设决定让用户按日期范围来搜索数据库。则必须满足下列逻辑关系才能生成搜索结果记录集:

可以使用下面的 WHERE 子句表示这种逻辑:

WHERE ColumnName BETWEEN ParameterValue1 AND ParameterValue2

ParameterValue1ParameterValue2 是包含搜索参数的 SQL 变量。在 Web 应用程序中,用户通常使用 HTML 表单提供这些参数。

以下示例说明如何用 SQL 表达这种数据库查询:

SELECT FIRSTNAME, LASTNAME, DEPARTMENT, STARTDATE
FROM EMPLOYEES
WHERE STARTDATE BETWEEN #varStartRange# AND #varEndRange#

例如,如果用户输入 7/1/99 和 12/31/99 作为范围参数,则 1999 年下半年加盟的所有雇员都将包含在记录集中,如下面的示例中所示:



根据组合搜索条件筛选记录

本节描述如何根据组合搜索条件在搜索结果记录集中包含记录。在 SQL 中可以使用 ANDORNOT 逻辑运算符组合搜索条件。

如果希望所有条件都为"真"时,记录才能包含在记录集中,请使用 AND 运算符,如下所示:

...WHERE LASTNAME LIKE 'varLastName' AND DEPARTMENT LIKE 'varDept' 

如果希望只要其中任何一个条件为"真"时,记录就可以包含在记录集中,请使用 OR 运算符,如下所示:

...WHERE LASTNAME LIKE 'varLastName' OR DEPARTMENT LIKE 'varDept' 

如果希望其中一个条件为"真",而另一个条件不为"真",请使用 NOT 运算符,如下所示:

...WHERE DEPARTMENT LIKE 'varDept' AND NOT COUNTRY LIKE 'varCountry' 

可以使用括号组合搜索条件:

...WHERE (DEPARTMENT LIKE 'varDept' AND STARTDATE < #varStart#)
OR STARTDATE BETWEEN #varStartRange# AND #varEndRange# 



未找到评论

 

评论添加到页面后给我发送电子邮件 | 评论报告

当前页: http://www.ecnnl.com/doc/dreamweaver/8_cn/using/47_sql4.htm

 

E中荷|荷兰华人电子商务