文档章节

数据库-SQL中like的用法

Clarence_D
 Clarence_D
发布于 2017/05/08 17:31
字数 820
阅读 282
收藏 0

SQL结构化查询语言中,LIKE语句有着至关重要的作用。


  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

             张小明    男

    李明天    男

    李天        女

    王五        男

    王清五    男

 

下面我们来举例说明一下:

  • 例1,查询name字段中包含有“明”字的。

      select * from table1 where name like '%明%'

  • 例2,查询name字段中以“李”字开头。

      select * from table1 where name like '李*'

  • 例3,查询name字段中含有数字的。

      select * from table1 where name like '%[0-9]%'

  • 例4,查询name字段中含有小写字母的。

      select * from table1 where name like '%[a-z]%'

  • 例5,查询name字段中不含有数字的。

  select * from table1 where name like '%[!0-9]%'

以上例子能列出什么值来显而易见。但在这里,我们着重要说明的是通配符“*”与“%”的区别。

 

 

  很多朋友会问,为什么我在以上查询时有个别的表示所有字符的时候用"%"而不用“*”?先看看下面的例子能分别出现什么结果:

  select * from table1 where name like '*明*'

       select * from table1 where name like '%明%'

 

  大家会看到,前一条语句列出来的是所有的记录,而后一条记录列出来的是name字段中含有“明”的记录,所以说,当我们作字符型字段包含一个子串的查询时最好采用“%”而不用“*”,用“*”的时候只在开头或者只在结尾时,而不能两端全由“*”代替任意字符的情况下。

 

© 著作权归作者所有

Clarence_D
粉丝 9
博文 136
码字总数 107352
作品 0
天津
程序员
私信 提问
SQL Server 2008 恢复数据库后,解决“孤立账户”问题

用spchangeusers_login消除Sql Server的孤立用户 孤立帐户,就是某个数据库的帐户只有用户名而没有登录名,这样的用户在用户库的sysusers系统表中存在,而在master数据库的syslogins中却没有...

Midnight
2011/11/05
0
0
Insql 1.2.5 发布,轻量级.NET ORM,数据库访问利器

轻量级的.NET ORM类库 . 对象映射基于Dapper , Sql配置灵感来自于Mybatis. 1.2.5版更新内容: 添加CodeSmith代码生成器文件 支持同一Insql Type类型的多个insql.xml文件合并,用于方便配置多...

rainrcn
02/20
0
0
Insql 1.1.0 正式版发布,轻量级.NET ORM类库

Insql 是一个轻量级的.NET ORM类库。对象映射基于Dapper, Sql配置灵感来自于Mybatis。 1.1.0版包含的功能特点: 支持 DoNet Core 2.0+ & DotNet Framework 4.6.1+ 支持依赖注入系统 MyBatis ...

rainrcn
02/14
0
0
[渗透&攻防] 二.SQL MAP工具从零解读数据库及基础用法

这是最近学习渗透和网站攻防的文章,希望能深入地学习这部分知识,自己作为一个初学者,前一篇文章从数据库原理解读了防止SQL注入,这篇文章通过SQLMAP工具简单介绍SQL注入及用法。自己仍在慢...

Eastmount
2017/07/18
0
0
关于hibernate的一些小记

最近接触的老项目,总是爱用hibernate,维护起来觉得很麻烦,这里随便总结一下hibernate的特点。 首先: 1.hibernate可以直接对java实例操作,达到数据库的增删改查作用,但是这个实例,只对...

杨健-YJ
02/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

通过微服务来正确实施SOA

对于组织来说,能够构建、发展和扩展大型应用程序是至关重要的, 但所涉及的挑战使其成为一项艰巨的任务。正因为如此, 微服务凭借能够将单个组件拆分成围绕特定业务功能的独立服务,已成为构建...

Linux就该这么学
10分钟前
1
0
从 Spark 到 Kubernetes — MaxCompute 的云原生开源生态实践之路

2019年5月14日,喜提浙江省科学技术进步一等奖的 MaxCompute 是阿里巴巴自研的 EB 级大数据计算平台。该平台依托阿里云飞天基础架构,是阿里巴巴在10年前做飞天系统的三大件之分布式计算部分...

阿里云官方博客
14分钟前
0
0
使用python来操作redis用法详解

1、redis连接 redis提供两个类Redis和StrictRedis用于实现Redis的命令,StrictRedis用于实现大部分官方的命令,并使用官方的语法和命令,Redis是StrictRedis的子类,用于向后兼容旧版本的red...

dragon_tech
14分钟前
1
0
给研发工程师的代码质量利器 | SOFAChannel#5 直播整理

> SOFA:Channel,有趣实用的分布式架构频道。 > > 本文根据 SOFAChannel#5 直播分享整理,主题:给研发工程师的代码质量利器 —— 自动化测试框架 SOFAActs。 > > 回顾视频以及 PPT 查看地址...

SOFAStack
16分钟前
0
0
段错误总结

https://blog.csdn.net/e_road_by_u/article/details/61415732 一、段错误是什么 一句话来说,段错误是指访问的内存超出了系统给这个程序所设定的内存空间,例如访问了不存在的内存地址、访问...

悲催的古灵武士
17分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部