SQL LIKE 通配符

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  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值