SQL语句 SELECT LIKE like用法详解.docVIP

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
SQL语句 SELECT LIKE like用法详解 2009-12-16 13:44 LIKE语句的语法格式是:select * from 表名 where 字段名 like 对应值(子串),它主要是针对字符型字段的,它的作用是在一个字符型字段列中检索包含对应子串的。   假设有一个数据库中有个表table1,在table1中有两个字段,分别是name和sex二者全是字符型数据。现在我们要在姓名字段中查询以“张”字开头的记录,语句如下:    select * from table1 where name like 张*    如果要查询以“张”结尾的记录,则语句如下:   select * from table1 where name like *张    这里用到了通配符“*”,可以说,like语句是和通配符分不开的。下面我们就详细介绍一下通配符。   多个字符   *   c*c代表cc,cBc,cbc,cabdfec等   它同于DOS命令中的通配符,代表多个字符。   多个字符   %   %c%代表agdcagd等   这种方法在很多程序中要用到,主要是查询包含子串的。   特殊字符    a a代表a*a   代替*   单字符   ?   b?b代表brb,bFb等   同于DOS命令中的?通配符,代表单个字符   单数字   #   k#k代表k1k,k8k,k0k   大致同上,不同的是代只能代表单个数字。   字符范围   -   [a-z]代表a到z的26个字母中任意一个   指定一个范围中任意一个   续上   排除   [!字符]   [!a-z]代表9,0,%,*等   它只代表单个字符   数字排除   [!数字]   [!0-9]代表A,b,C,d等   同上   组合类型   字符[范围类型]字符   cc[!a-d]#代表ccF#等   可以和其它几种方式组合使用   例:假设表table1中有以下记录:   name sex   张小明    男   李明天    男   李a天     女   王5五     男   王清五    男   下面我们来举例说明一下:   查询name字段中包含有“明”字的。   select * from table1 where name like %明%   查询name字段中以“李”字开头。   select * from table1 where name like 李*   查询name字段中含有数字的。   select * from table1 where name like %[0-9]%    查询name字段中含有小写字母的。   select * from table1 where name like %[a-z]%   查询name字段中不含有数字的。   select * from table1 where name like %[!0-9]% ???????? 我们着重要说明的是通配符“*”与“%”的区别。    select * from table1 where name like *明*    select * from table1 where name like %明%   大家会看到,前一条语句列出来的是所有的记录,而后一条记录列出来的是name字段中含有“明”的记录,所以说,当我们作字符型字段包含一个子串的查询时最好采用“%”而不用“*”,用“*”的时候只在开头或者只在结尾时,而不能两端全由“*”代替任意字符的情况下。 大家在写sql 语句的时候, 如果是 select .. where 类型的语句, 有注意到条件的前后顺序吗?我今天做个小实验。 比如查询地址里 包含“海口市”及“振兴路” 两个关键字的数据, 一般时候可能会用 select * from dm_addr where addr like %海口市% and addr like %振兴路% 的形式,但其实这种查询效率不高,原因在于条件的前后顺序。以下是测试结果 mysql select count(1) from dm_addr where addr like %振兴路% and addr like %海口市%; +----------+ | count(1) | +----------+ | 96 | +----------+ 1 row in set (0.82 sec) mysql select count(1) from dm_addr where addr like %海口市% and addr lik

文档评论(0)

精华文档888 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档