sql中的like统配符

来源:互联网 发布:js预加载页面动画 编辑:程序博客网 时间:2024/06/05 18:26
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
like
确定给定的字符串是否与指定的模式匹配。模式可以包含常规字符和通配符字符。模式匹配过程中,常规字符必须与字符串中指定的字符完全匹配。然而,可使用字符串的任意片段匹配通配符。与使用=和!=字符串比较运算符相比,使用通配符可使like运算符更加灵活。如果任何参数都不属于字符串数据类型,Microsoft®™会将其转换成字符串数据类型(如果可能)。
语法
match_expression[NOT]likepattern[ESCAPEescape_character]
参数
match_expression

任何字符串数据类型的有效sqlServer表达式。

pattern

match_expression中的搜索模式,可以包含下列有效sqlServer通配符。
通配符描述示例%包含零个或更多字符的任意字符串。WHEREtitlelike'%computer%'将查找处于书名任意位置的包含单词computer的所有书名。_(下划线)任何单个字符。WHEREau_fnamelike'_ean'将查找以ean结尾的所有4个字母的名字(Dean、Sean等)。[]指定范围([a-f])或集合([abcdef])中的任何单个字符。WHEREau_lnamelike'[C-P]arsen'将查找以arsen结尾且以介于C与P之间的任何单个字符开始的作者姓氏,例如,Carsen、Larsen、Karsen等。[^]不属于指定范围([a-f])或集合([abcdef])的任何单个字符。WHEREau_lnamelike'de[^l]%'将查找以de开始且其后的字母不为l的所有作者的姓氏。

escape_character

字符串数据类型分类中的所有数据类型的任何有效sqlServer表达式。escape_character没有默认值,且必须仅包含一个字符。
结果类型
Boolean
结果值
如果match_expression匹配指定模式,like将返回TRUE。
注释
当使用like进行字符串比较时,模式字符串中的所有字符都有意义,包括起始或尾随空格。如果查询中的比较要返回包含"abc"(abc后有一个空格)的所有行,则将不会返回包含"abc"(abc后没有空格)的列所在行。但是可以忽略模式所要匹配的表达式中的尾随空格。如果查询中的比较要返回包含"abc"(abc后没有空格)的所有行,则将返回以"abc"开始且具有零个或多个尾随空格的所有行。

由于数据存储方式的原因,使用包含char和varchar数据模式的字符串比较可能无法通过like比较。了解每种数据类型的存储方式以及导致like比较失败的原因十分重要。下面的示例将局部char变量传递给存储过程,然后使用模式匹配查找某个作者的所有着作。在此过程中,作者的姓将作为变量传递。

CREATEPROCEDUREfind_books@AU_LNAMEchar(20)ASSELECT@AU_LNAME=RTRIM(@AU_LNAME)+'%'SELECTt.title_id,t.titleFROMauthorsa,titleauthorta,titlestWHEREa.au_id=ta.au_idANDta.title_id=t.title_idANDa.au_lnamelike@AU_LNAME

当名字中包含的字符数小于20时,char变量(@AU_LNAME)将包含尾随空格,这导致find_books过程中没有行返回。由于au_lname列为varchar类型,所以没有尾随空格。因为尾随空格是有意义的,所以此过程失败。

但下面的示例是成功的,因为尾随空格没有被添加到varchar变量中:

USEpubsGOCREATEPROCEDUREfind_books2@au_lnamevarchar(20)ASSELECTt.title_id,t.titleFROMauthorsa,titleauthorta,titlestWHEREa.au_id=ta.au_idANDta.title_id=t.title_idANDa.au_lnamelike@au_lname+'%'EXECfind_books2'ring'

下面是结果集:

title_idtitle-----------------------------------------------------------------------MC3021TheGourmetMicrowavePS2091IsAngertheEnemy?PS2091IsAngertheEnemy?PS2106LifeWithoutFear(4row(s)affected)
使用like的模式匹配
当搜索datetime值时,推荐使用like,因为datetime项可能包含各种日期部分。例如,如果将值199812319:20插入到名为arrival_time的列中,则子句WHEREarrival_time=9:20将无法找到9:20字符串的精确匹配,因为sqlServer将其转换为1900年1月1日上午9:20。然而,子句WHEREarrival_timelike'%9:20%'将找到匹配。1
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 如果淘宝被盗了店铺乱上东西怎么办 快递不送货直接代售点签收怎么办 淘宝快递没收到却显示已签收怎么办 支付宝余额未满16受限怎么办 未满16岁支付宝余额受限怎么办 手机天猫购物买的数量大怎么办 扣扣游戏领礼包出现账号异常怎么办 美容院转让给别人客人要退钱怎么办 卖家毁约中介费担保费怎么办 天猫买东西店家不开增值税票怎么办 天猫专卖店品牌不授权了怎么办 临时京东账号被冻结买的东西怎么办 天猫强行退款给买家商家怎么办 淘宝店铺没交保证金被释放了怎么办 沭阳县地段生过了报名时间怎么办 淘宝买东西地址和收件人填错怎么办 才装修的房子马上要住怎么办 淘宝发货显示无效的发货人怎么办 微信位置和所在地位置不一样怎么办 qq号被冻结了短信发不出去怎么办 商户刷自己信息卡被冻结怎么办 天猫超市买的东西坏了怎么办 天猫超市买东西地址填错了怎么办 天猫超市地址填错了怎么办 天猫超市退货达不到包邮条件怎么办 保千里达令手机锁屏密码忘记怎么办 淘宝买的东西给的发票不见了怎么办 在天猫超市买到发霉怎么办 支付宝红包券金额消费不完怎么办 支付宝向对方发起收款不付怎么办 支付宝收款别人少付了怎么办 红牛领到50元加油优惠券怎么办用 苹果淘宝看评价图片看不清楚怎么办 淘宝账号账户体验中心有违规怎么办 淘宝买的东西需要寄回去维修怎么办 淘宝闪电退款了卖家不肯退了怎么办 云视听会员账号账号密码忘了怎么办 移动卡异地补卡忘记服务密码怎么办 欠我钱的人不接电话怎么办 苹果手机换屏升级系统了黑屏怎么办 苹果手机黑屏时接不到电话怎么办