使用 ESCAPE 子句的模式匹配
可搜索包含一个或多个特别通配符的字符串。例如,customers 数据库中的 discounts 表可能存储含百分号 (%) 的折扣值。若要搜索作为字符而不是通配符的百分号,必须提供 ESCAPE 关键字和转义符。例如,一个样本数据库包含名为 comment 的列,该列含文本 30%。若要搜索在 comment 列中的任何位置包含字符串 30% 的任何行,请指定由 WHERE comment LIKE '0!%%' ESCAPE '!' 组成的 WHERE 子句。假如不指定 ESCAPE 和转义符,SQL Server 将返回任何含字符串 30 的行。wwww.chin aitpower.comIqpmA
下例说明如何在 pubs 数据库 titles 表的 notes 列中搜索字符串"50% off when 100 or more copies are purchased":wwww.chin aitpower.comIqpmA
USE pubs GO SELECT notes FROM titles WHERE notes LIKE '50%% off when 100 or more copies are purchased' ESCAPE '%' GO
示例
A. 使用带 % 通配符的 LIKE
下例查找 authors 表中任何区号为 415 的电话号码。wwww.chin aitpower.comIqpmA
USE pubs GO SELECT phone FROM authors WHERE phone LIKE '415%' ORDER by au_lname GO
下面是结果集:wwww.chin aitpower.comIqpmA
phone ------------ 415 658-9932 415 548-7723 415 836-7128 415 986-7020 415 836-7128 415 534-9219 415 585-4620 415 354-7128 415 834-2919 415 843-2991 415 935-4228 (11 row(s) affected)
B. 使用带 % 通配符的 NOT LIKE
下例查找 authors 表中任何区号不是 415 的电话号码。wwww.chin aitpower.comIqpmA
USE pubs GO SELECT phone FROM authors WHERE phone NOT LIKE '415%' ORDER BY au_lname GO
下面是结果集:wwww.chin aitpower.comIqpmA
phone ------------ 503 745-6402 219 547-9982 615 996-8275 615 297-2723 707 938-6445 707 448-4982 408 286-2428 301 946-8853 801 826-0752 801 826-0752 913 843-0462 408 496-7223 (12 row(s) affected)
C. 使用 ESCAPE 子句
下例使用 ESCAPE 子句和转义符查找 mytbl2 表的 c1 列中的精确字符串 10-15%。wwww.chin aitpower.comIqpmA
USE pubs
GO
IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'mytbl2')
DROP TABLE mytbl2
GO
USE pubs
GO
CREATE TABLE mytbl2
(
c1 sysname
)
GO
INSERT mytbl2 VALUES ('Discount is 10-15% off')
INSERT mytbl2 VALUES ('Discount is .10-.15 off')
GO
SELECT c1
FROM mytbl2
WHERE c1 LIKE '-15!% off%' ESCAPE '!'
GO
D. 使用 [ ] 通配符
下例查找名字为 Cheryl 或 Sheryl 的作者。wwww.chin aitpower.comIqpmA
USE pubs GO SELECT au_lname, au_fname, phone FROM authors WHERE au_fname LIKE '[CS]heryl' ORDER BY au_lname ASC, au_fname ASC GO
下例查找姓为 Carson、Carsen、Karson 或 Karsen 的作者所在的行。wwww.chin aitpower.comIqpmA
USE pubs GO SELECT au_lname, au_fname, phone FROM authors WHERE au_lname LIKE '[CK]ars[eo]n' ORDER BY au_lname ASC, au_fname ASC GO
表达式wwww.chin aitpower.comIqpmA
函数wwww.chin aitpower.comIqpmA
SELECTwwww.chin aitpower.comIqpmA
WHEREwwww.chin aitpower.comIqpmA
