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>
确定给定的字符串是否与指定的模式匹配。模式可以包含常规字符和通配符字符。模式匹配过程中,常规字符必须与字符串中指定的字符完全匹配。然而,可使用字符串的任意片段匹配通配符。与使用=和!=字符串比较运算符相比,使用通配符可使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>
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>
- sql中的like统配符
- sql中的like统配符
- sql中的like统配符
- sql中的like统配符
- 统配符
- SQL语句like子句中的转义符
- SQL语句like子句中的转义符
- SQL语句like子句中的转义符
- SQL Like中的逗号分隔符
- SQL语句like子句中的转义符
- SQL语句like子句中的转义符
- sql中的like
- sql中的like
- sql like 中的patten
- SQL---LIKE中的‘[’或‘]’
- SQL中的like语句详解
- SQL语言中的like匹配
- SQL模糊查询中的Like
- SQLSERVER2000的数据类型
- 通用存储过程的编写
- 来自AskTom的关于SoftParse的解释
- MS2000数据转换服务部署
- 字符集问题的初步探讨(三)
- sql中的like统配符
- 写给初学MSSQL的朋友
- sqlserver有用函数
- 查看SQLServer数据表的详细信息。
- SqlServer密码问题(原创)
- SQL无法连接
- sqlserver2000实验
- 存储过程的分页方案比拼
- 打印的备注字段