SQLServer中的通配符和转义字符

通配符

SQL中的通配符用来代替一个或者多个字符。

SQL通配符与LIKE运算符一起使用。

SQL Server中常用的通配符

%

匹配任意长度的(长度可以为0)字符

如’m%n’匹配字符m和n之间有任意个字符的字符串,匹配的示例有man,min,mon,moon,...

_

匹配任意单个字符

如’m_n’匹配字符m和n之间含有任意一个字符的字符串,匹配的示例有man,min,mon,...

[字符集合]

匹配字符集合中的任何一个字符

如’[mz]’匹配字符m或者z,’[m-z]’匹配介于m与z之间的任意单个字符。

[^]

匹配不在括号中的任意单个字符

如’[^mz]’匹配任何不为m或者z的单个字符。

转义字符

使用转义字符,可以告诉DBMS,查询中的通配符不再是通配符,而是字符的实际值。

如使用转义字符对“%”进行转义后,“%”就表示百分号本身了。

使用ESCAPE 定义转义字符

看下面的示例:

?

1

2

3

4

5

6

7

8CREATETABLEtb_TestTable(

idintNOTNULLIDENTITY,

nameNVARCHAR(64),

PRIMARYKEY(id));

INSERTINTOtb_TestTable(name)VALUES('tiana');

INSERTINTOtb_TestTable(name)VALUES('tiana5');

INSERTINTOtb_TestTable(name)VALUES('tiana5%');

SELECTnameFROMtb_TestTableWHEREnameLIKE'%/%'ESCAPE'/'

例子中先定义表tb_TestTable,再向其中插入3条数据,最后对表进行查询操作。

查询中的 LIKE '%/%' ESCAPE '/' 子句中,'/'被定义为转义字符,这将告诉DBMS:字符串'%/%'中的第二个百分号为实际值,而不是通配符。当然这里的第一个百分号仍然为通配符。所以,这里查询的结果应该是:'tiana5%'。

在SQL SERVER中,若不使用ESCAPE子句定义转义字符的话,还可以使用’[%]’的形式告诉DNMS:这里的%不再是通配符而是百分号本身。

所以上面的查询也可以写成:

?

1

SELECTnameFROMtb_TestTableWHEREnameLIKE'%[%]'

上面的介绍同样适用于其他通配符,对单引号,双引号同样适用。

quote:如果在Android中需要匹配数据库中的类似com.myapp.executor之类,如果使用ContentResolver的query,可以将字串中的'.'替换成下划线,将where子句定义为类似"title like com_myapp_executor",后面的参数置为null。就可以定位指定的记录了。试过单引号和反斜线似乎都不能够定位。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,773评论 19 139
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 8,533评论 0 4
  • 莫笑痴儿空想。 休提他年虚妄。 一件件缘法世事非寻常。 情也难讲。 都只因。春酒滴尽飞花起。 則落个。池水流荡风波...
    顾沅青阅读 1,807评论 0 0
  • 春节前夕,绕道至大理古城 苍山抚云翼,洱海绣涛声。何处心开远?车舟横古城。
    语文湿地阅读 1,163评论 0 0
  • 总到底什么才算有出息 当官吗?发财吗?嫁个有钱人? 出于中华传统美德的需要,过年期间走亲访友在所难免,我当然也不例...
    哎哟音乐阅读 2,669评论 0 0