是使用逻辑运算符 AND、OR 和 NOT 的一个或更多谓词的组合。
< search_condition > ::=
{ [ NOT ] < predicate > | ( < searth_condition > ) }
[ { AND | OR } [ NOT ] { < predicate > |( < searth_condition > ) } ]
} [ ,...n ]
< predicate > ::=
{ expression { = | < > | != | > | > = | ! > | < | < = | ! < } expression
| string_expression [ NOT ] LIKE string_expression
[ ESCAPE 'escape_character' ]
| expression [ NOT ] BETWEEN expression AND expression
| expression IS [ NOT ] NULL
| CONTAINS
(
{ column | *
} , '< contains_search_condition >' )
| FREETEXT (
{ column | *
} , 'freetext_string' )
| expression [ NOT ] IN ( subquery | expression [ ,...n ] )
| expression { = | < > | != | > | > = | ! > | < | < = | ! < }
{ ALL | SOME | ANY} ( subquery )
| EXISTS ( subquery )
}
<search_condition>
指定 SELECT 语句、查询表达式或子查询的结果集内所返回的行的条件。对于 UPDATE 语句,指定要更新的行。对于 DELETE 语句,指定要删除的行。对 Transact-SQL 语句搜索条件中可以包含的谓词数量没有限制。
< predicate >
是返回 TRUE、FALSE 或 UNKNOWN 的表达式。
逻辑运算符的优先顺序是 NOT(最高),接着是 AND,最后是 OR。同一优先级上的取值顺序是从左到右。在搜索条件内,可使用圆括号替代此顺序。有关逻辑运算符如何在真实值上运算的更多信息,请参见 AND、OR 和 NOT。
下例假定 description 列存在于 finances 表内。若要搜索其中的 description 列包含精确字符 g_ 的行,请使用 ESCAPE 选项,因为 _ 是通配符。如果不指定 ESCAPE 选项,查询将搜索任何包含字母 g 后跟除 _ 字符外的任何单个字符的描述值。
SELECT *
FROM finances
WHERE description LIKE 'gs_' ESCAPE 'S'
GO
下例使用 WHERE 子句检索公司名称末尾包含字符串 snabbköp 的公司的联系人姓名、电话和传真号码。
相关文章USE Northwind
ö
SELECT CompanyName, ContactName, Phone, Fax
FROM Customers
WHERE CompanyName LIKE N'%snabbkp'
ORDER BY CompanyName ASC, ContactName ASC