like '%[wx|wy]%' 匹配含有 wx或wy 的数据
没有正则表达式LIKE 确定给定字符串
否与指定
模式匹配
模式
包含常规字符和通配符字符
模式匹配过程
常规字符必须与字符串
指定
字符完全匹配
而
使用字符串
任意片段匹配通配符
与使用 = 和 != 字符串比较运算符相比
使用通配符
使 LIKE 运算符更加灵活
任何参数都
属于字符串数据类型
Microsoft® SQL Server™ 会
其转换成字符串数据类型(
能)
语法 match_expression [ NOT ] LIKE pattern [ ESCAPE escape_character ] 参数 match_expression 任何字符串数据类型
有效 SQL Server 表达式
patternmatch_expression
搜索模式
包含下列有效 SQL Server 通配符 1 % 包含零
或更多字符
任意字符串 示例:WHERE title LIKE '%computer% '
查找处于书名任意位置
包含单词 computer
所有书名
2 _(下划线) 任何单
字符 示例:WHERE au_fname LIKE '_ean '
查找
ean 结尾
所有 4
字母
名字(Dean、Sean 等)
3 [] 指定范围
任何单
字符 示例:WHERE au_lname LIKE '[C-P]arsen '
查找
arsen 结尾且
介于 C 与 P 之间
任何单
字符开始
作者姓氏
例
Carsen、Larsen、Karsen 等 4 [^]
属于指定范围
任何单
字符
与 [] 相反 示例:WHERE au_lname LIKE 'de[^l]% '
查找
de 开始且其
字母
l
所有作者
姓氏
![]()
使用 like
模式匹配:
搜索Datetime类型时
建议使用like . LIKE 支持 ASCII 模式匹配和 Unicode 模式匹配
当所有参数
包括 match_expression、pattern 和 escape_character(
有)都
ASCII 字符数据类型时
执行 ASCII 模式匹配
其
任何参数属于 Unicode 数据类型
则所有参数
被转换
Unicode 并执行 Unicode 模式匹配
当对 Unicode 数据(nchar 或 nvarchar 数据类型)使用 LIKE 时
尾随空格
有意义
对于非 Unicode 数据
尾随空格没有意义
Unicode LIKE 与 SQL-92 标准兼容
ASCII LIKE 与 SQL Server
早期版本兼容 二 使用 % 通配符 例
此查询
显示数据库
所有
系统表
因
们都
字母 sys 开始: SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE 'sys% ' 若要查阅非系统表
所有对象
请使用 NOT LIKE 'sys% '
共有 32
对象且 LIKE 找
13
与模式匹配
名称
则 NOT LIKE
找
19
与 LIKE 模式
匹配
对象 三 使用escape字句
模式匹配
搜索包含
或多
特殊通配符
字符串
例
customers 数据库
discounts 表
能存储含百分号 (%)
折扣值
若要搜索作
字符而
通配符
百分号
必须提供 ESCAPE 关键字和转义符
例
样本数据库包含名
comment
列
该列含文本 30%
若要搜索
comment 列
任何位置包含字符串 30%
任何行
请指定由 WHERE comment LIKE '%30!%% ' ESCAPE '! ' 组成
WHERE 子句
指定 ESCAPE 和转义符
SQL Server
返回所有含字符串 30
行
下例使用 ESCAPE 子句和转义符查找 mytbl2 表
c1 列
精确字符串 10-15% 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 '%10-15!% off% ' ESCAPE '! ' GO 四 使用 [] 通配符 下例查找姓
Carson、Carsen、Karson 或 Karsen
作者所
行
USE pubs SELECT au_lname, au_fname, phone FROM authors WHERE au_lname LIKE '[CK]ars[eo]n ' ORDER BY au_lname ASC, au_fname ASC