是使用逻辑运算符 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