欢迎进入windows社区论坛,与300万技术人员互动交流 >>进入 sql 通配符 在搜索数据库中的数据时,sql 通配符可以替代一个或多个字符。 sql 通配符必须与 like 运算符一起使用,=操作是没有的。 通配符 描述 % 替代一个或多个字符 (相当于正则表达式中的 *
欢迎进入windows社区论坛,与300万技术人员互动交流 >>进入
sql 通配符
在搜索数据库中的数据时,sql 通配符可以替代一个或多个字符。
sql 通配符必须与 like 运算符一起使用,=操作是没有的。
通配符描述
% 替代一个或多个字符(相当于正则表达式中的 * )
_ 仅替代一个字符(相当于正则表达式中的 ? )
[charlist] 字符列中的任何单一字符(事实上只有左方括号用于转义,右方括号使用最近优先原则匹配最近的左方括号)
[^charlist]
或者
[!charlist]
不在字符列中的任何单一字符用于排除一些字符进行匹配(这个与正则表达式中的一样)
原始的表 (用在例子中的):
persons 表:
idlastnamefirstnameaddresscity
1 adams john oxford street london
2 bush george fifth avenue new york
3 carter thomas changan street beijing
使用 % 通配符
例子 1
现在,我们希望从上面的 persons 表中选取居住在以 ne 开始的城市里的人:
我们可以使用下面的 select 语句:
select * from persons
where city like 'ne%'
结果集:
idlastnamefirstnameaddresscity
2 bush george fifth avenue new york
例子 2
接下来,我们希望从 persons 表中选取居住在包含 lond 的城市里的人:
我们可以使用下面的 select 语句:
select * from persons
where city like '%lond%'
结果集:
idlastnamefirstnameaddresscity
1 adams john oxford street london
使用 _ 通配符
例子 1
现在,我们希望从上面的 persons 表中选取名字的第一个字符之后是 eorge 的人:
我们可以使用下面的 select 语句:
select * from persons
where firstname like '_eorge'
结果集:
idlastnamefirstnameaddresscity
2 bush george fifth avenue new york
例子 2
接下来,我们希望从 persons 表中选取的这条记录的姓氏以 c 开头,然后是一个任意字符,然后是 r,然后是任意字符,然后是 er:
我们可以使用下面的 select 语句:
select * from persons
where lastname like 'c_r_er'
结果集:
idlastnamefirstnameaddresscity
3 carter thomas changan street beijing
使用 [charlist] 通配符
例子 1
现在,我们希望从上面的 persons 表中选取居住的城市以 a 或 l 或 n 开头的人:
我们可以使用下面的 select 语句:
select * from persons
where city like '[aln]%'
结果集:
idlastnamefirstnameaddresscity
1 adams john oxford street london
2 bush george fifth avenue new york
例子 2
现在,我们希望从上面的 persons 表中选取居住的城市不以 a 或 l 或 n 开头的人:
我们可以使用下面的 select 语句:
select * from persons
where city like '[!aln]%'
结果集:
idlastnamefirstnameaddresscity
3 carter thomas changan street beijing
通配符特殊用法:escape
select 'asjldfj%%abc%asdfjklj'
select * from testhxj where name like '%/%abc/%%' escape '\'(这里\表示是通配符,这样匹配的数据是包含%abc%的数据,如果不用escape,就无法将%匹配为字符串)