CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

怎么搜索包含%符号的记录?

楼主wtogether(wtogether)2005-04-04 16:56:49 在 MS-SQL Server / 基础类 提问

我试了很多方法,例如:like   '%\%%',   like   '%%%%',   like   '%%25%'   都不行啊,哪位大虾有好的方法啊 问题点数:50、回复次数:4Top

1 楼jinjazz(近身剪)回复于 2005-04-04 17:00:09 得分 15

--建立测试环境  
  Create   Table   表(a   varchar(10))  
  --插入数据  
  insert   into   表  
  select   'ss'   union  
  select   '%'   union  
  select   '%%'   union  
  select   '%%%'  
  --测试语句  
      select   *   from   表   where   a   like   '%[%][%]%'  
     
  --删除测试环境  
  Drop   Table   表  
  /*  
  a                      
  ----------    
  %%  
  %%%  
  */Top

2 楼lsxaa(小李铅笔刀)回复于 2005-04-04 17:06:25 得分 10

where         like       '%!%%'       escape   '!'Top

3 楼hsj20041004(光芒)回复于 2005-04-04 17:11:21 得分 10

select   *   from   表   where   a   like   '%[%]%'  
  表示查询字段,中间是%   而俩边是任意数值!!!Top

4 楼xluzhong(Ralph)回复于 2005-04-04 17:18:32 得分 15

 
    访问和更改关系数据    
   
     
  搜索条件中的模式匹配  
  LIKE   关键字搜索与指定模式匹配的字符串、日期或时间值。有关更多信息,请参见数据类型。LIKE   关键字使用常规表达式包含值所要匹配的模式。模式包含要搜索的字符串,字符串中可包含四种通配符的任意组合。  
   
  通配符   含义    
  %   包含零个或更多字符的任意字符串。    
  _   任何单个字符。    
  [   ]   指定范围(例如   [a-f])或集合(例如   [abcdef])内的任何单个字符。    
  [^]   不在指定范围(例如   [^a   -   f])或集合(例如   [^abcdef])内的任何单个字符。    
   
   
  请将通配符和字符串用单引号引起来,例如:    
   
  LIKE   'Mc%'   将搜索以字母   Mc   开头的所有字符串(如   McBadden)。  
   
   
  LIKE   '%inger'   将搜索以字母   inger   结尾的所有字符串(如   Ringer、Stringer)。  
   
   
  LIKE   '%en%'   将搜索在任何位置包含字母   en   的所有字符串(如   Bennet、Green、McBadden)。  
   
   
  LIKE   '_heryl'   将搜索以字母   heryl   结尾的所有六个字母的名称(如   Cheryl、Sheryl)。  
   
   
  LIKE   '[CK]ars[eo]n'   将搜索下列字符串:Carsen、Karsen、Carson   和   Karson(如   Carson)。  
   
   
  LIKE   '[M-Z]inger'   将搜索以字符串   inger   结尾、以从   M   到   Z   的任何单个字母开头的所有名称(如   Ringer)。  
   
   
  LIKE   'M[^c]%'   将搜索以字母   M   开头,并且第二个字母不是   c   的所有名称(如   MacFeather)。    
  下列查询在   authors   表中查找所有区号为   415   的电话号码:  
   
  SELECT   phone  
  FROM   pubs.dbo.authors  
  WHERE   phone   LIKE   '415%'  
   
  可以用同样的通配符使用   NOT   LIKE。若要在   authors   表中查找区号不是   415   的所有电话号码,请使用下列等价查询中的任意一个:  
   
  SELECT   phone  
  FROM   pubs.dbo.authors  
  WHERE   phone   NOT   LIKE   '415%'  
   
  --   Or  
   
  SELECT   phone  
  FROM   pubs.dbo.authors  
  WHERE   NOT   phone   LIKE   '415%'  
   
  IS   NOT   NULL   子句可与通配符和   LIKE   子句结合使用。例如,下列查询从   authors   表中检索以   415   开头且   IS   NOT   NULL   的所有电话号码:  
   
  USE   pubs  
  SELECT   phone  
  FROM   authors  
  WHERE   phone   LIKE   '415%'   and   phone   IS   NOT   NULL  
   
   
   
  重要     包含   LIKE   关键字的语句的输出结果取决于安装过程中所选的排序次序。有关不同排序次序所产生的影响的信息,请参见排序规则。    
   
   
  可用于   text   列的   WHERE   条件只有   LIKE、IS   NULL   或   PATINDEX。  
   
  不与   LIKE   一同使用的通配符将解释为常量而非模式,换言之,这些通配符仅代表其本身的值。下列查询试图查找只由四个字符   415%   组成的电话号码。该查询并不会查找以   415   开头的电话号码。有关常量的更多信息,请参见使用常量。  
   
  SELECT   phone  
  FROM   pubs.dbo.authors  
  WHERE   phone   =   '415%'  
   
  使用通配符时应着重考虑的另一个问题是对性能的影响。如果表达式以通配符开头,就不能使用索引。(就如同给定了姓名"%mith"而非"Smith"时,将无法知道应从电话簿的哪一页开始查找。)表达式中间或结尾处的通配符不妨碍使用索引,如同在电话簿中一样,如果姓名为"Samuel%",则不论   Samuels   和   Samuelson   是否都在电话簿上,都应知道该从何处开始查找。  
   
  搜索通配符字符  
  可以搜索通配符字符。有两种方法可指定平常用作通配符的字符:    
   
  使用   ESCAPE   关键字定义转义符。在模式中,当转义符置于通配符之前时,该通配符就解释为普通字符。例如,要搜索在任意位置包含字符串   5%   的字符串,请使用:    
  WHERE   ColumnA   LIKE   '%5/%%'   ESCAPE   '/'  
   
  在上述   LIKE   子句中,前导和结尾百分号   (%)   解释为通配符,而斜杠   (/)   之后的百分号解释为字符   %。  
   
  在方括号   ([   ])   中只包含通配符本身。要搜索破折号   (-)   而不是用它指定搜索范围,请将破折号指定为方括号内的第一个字符:    
  WHERE   ColumnA   LIKE   '9[-]5'  
   
  下表显示了括在方括号内的通配符的用法。  
   
  符号   含义    
  LIKE   '5[%]'   5%    
  LIKE   '5%'   5   后跟   0   个或更多字符的字符串    
  LIKE   '[_]n'   _n    
  LIKE   '_n'   an,   in,   on   (and   so   on)    
  LIKE   '[a-cdf]'   a,   b,   c,   d,   or   f    
  LIKE   '[-acdf]'   -,   a,   c,   d,   or   f    
  LIKE   '[   [   ]'   [    
  LIKE   ']'   ]    
   
   
  如果使用   LIKE   进行字符串比较,模式字符串中的包括起始空格和/或尾随空格在内的所有字符都有意义。如果查询比较要求返回包含"abc   "(abc   后有一个空格)的所有行,则不会返回列值为"abc"(abc   后没有空格)行。但是反过来,情况并非如此。可以忽略模式所要匹配的表达式中的末尾空格。如果查询比较要求返回包含"abc"(abc   后没有空格)的所有行,则将返回以"abc"开始且具有零个或多个末尾空格的所有行。  
   
  Top

相关问题

  • 怎么清除搜索栏的记录
  • 怎么清除使用GOOGLE时的搜索记录
  • 怎么清除google搜索栏里的历史记录
  • 在表中搜索不重复的记录语句该怎么写啊!谢了!
  • 我每次在网页上搜索了东西后,下次再搜索,会出现上次的记录..问怎么删除这个记录呢?
  • 用DataGrid显示数据 我想符号条件的行记录超连接不可用 怎么做?
  • 关于在LS中的DB.RESEARCH的问题,怎么让搜索出来的记录集按某个字段排序?
  • 请问怎么搜索在ACCESS数据库中日期小于2000-1-1日所有记录
  • 高分求助在线等:一个表中有好多关联得数据,该怎么搜索这些记录?
  • 搜索记录前加数字(急)

关键词

  • 字符
  • 字母
  • 查询
  • 模式
  • 通配符
  • 字符串
  • 搜索
  • authorswhere
  • inger
  • 空格

得分解答快速导航

  • 帖主:wtogether
  • jinjazz
  • lsxaa
  • hsj20041004
  • xluzhong

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo