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
8

CREATE TABLE  tb_TestTable(
id int NOT NULL IDENTITY,
name NVARCHAR(64),
PRIMARY KEY(id));
INSERT INTO tb_TestTable(name) VALUES('tiana');
INSERT INTO tb_TestTable(name) VALUES('tiana5');
INSERT INTO tb_TestTable(name) VALUES('tiana5%');
SELECT name FROM tb_TestTable WHERE name LIKE '%/%' ESCAPE '/'

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

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

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

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

?

1

SELECT name FROM tb_TestTable WHERE name LIKE '%[%]'

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

时间: 2024-11-02 23:20:44

SQLServer中的通配符和转义字符的相关文章

SQLServer中建立与服务器的连接时出错的解决方案

SQLServer中建立与服务器的连接时出错的解决方案如下: SQLServer中建立与服务器的连接时出错的解决方案如下: 步骤1:在SQLServer 实例上启用远程连接 1.指向"开始->程序->Microsoft SQL Server 2005->配置工具->SQL Server 外围应用配置器" 2.在"SQL Server 2005 外围应用配置器"页, 单击"服务和连接的外围应用配置器" 3.然后单击展开&qu

SQLServer中一个多用户自动生成编号的过程

server|sqlserver|过程 SQLServer中一个多用户自动生成编号的过程 if not exists (select * from dbo.sysobjects where id = object_id(N'[IndexTable]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)create table IndexTable(Ex char(20), num integer) go create procedure SetIndex @

在sqlserver中如何根据字段名查找字段所在的表

server|sqlserver 面的sql语句在sqlserver中根据字段名查询,看哪些表包含了这个字段 复制SQL代码保存代码select   a.name   表名,b.name   列名   from   sysobjects   a,syscolumns   b   where   a.id=b.id   and   b.name='表名'  and   a.type='U'

使用asp.net将图片上传并存入SqlServer中,然后从SqlServer中读取并显示出来

asp.net|server|sqlserver|上传|显示 1,使用asp.net将图片上传并存入SqlServer中,然后从SqlServer中读取并显示出来一,上传并存入SqlServer 数据库结构  create table test  {     id identity(1,1),     FImage image  }  相关的存储过程  Create proc UpdateImage  (     @UpdateImage Image  )  As  Insert Into te

.Net在SqlServer中的图片存取技术

server|sqlserver 本文总结如何在.Net Winform和.Net webform(asp.net)中将图片存入sqlserver中并读取显示的方法1,使用asp.net将图片上传并存入SqlServer中,然后从SqlServer中读取并显示出来一,上传并存入SqlServer 数据库结构 create table test { id identity(1,1), FImage image } 相关的存储过程 Create proc UpdateImage ( @UpdateI

把sqlserver中的存储过程注释后创建到mysql中

  把sqlserver中的存储过程注释后创建到mysql中 #!/usr/bin/perl use DBI; use Switch; use Encode; use Encode::CN; my $source_name = "sqldb"; my $source_user_name = "sa"; my $source_user_psd = "123"; my $db_name="mysqldb"; my $locatio

给sqlserver中的表创建索引

  给sqlserver中的表创建索引 #!/usr/bin/perl use DBI; use Switch; use Encode; use Encode::CN; # my $source_name = "zoe"; # my $source_user_name = "sa"; # my $source_user_psd = "123"; # my $db_name="mysqlDb"; # my $location=&

SQLSERVER中XML查询:FORXML指定RAW

SQL SERVER中XML查询:FOR XML指定RAW 前言 在SQL SERVER中,XML查询可以指定RAW,AUTO,EXPLICIT,PATH.本文用一些实例介绍SQL SERVER中指定RAW的XML查询. 基础FOR XML查询 看实例: with TestXml as ( select 1 as id,'LeeWhoeeUniversity' as name union all select 2,'SQLSERVER中XML查询' union all select 3 ,'FO

sqlserver中排序取数据的问题

  sqlserver中关于排序取数据的问题 SELECT * FROM (SELECT *,row_number() OVER (PARTITION BY wok.flag_3 ORDER BY wok.createtime desc) rownum FROM (select workh.corp_code,workh.corp_name,workh.begin_date, workh.createtime, workh.flag_1,workh.flag_2,workb.main_id,wo