当前位置: 首页 > news >正文

sql语句中like的用法详细解析

在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
张小明     男
    李明天       男
    李a天       女
    王5五       男
    王清五      男

下面我们来举例说明一下:
例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字段中含有“明”的记录,
所以说,当我们作字符型字段包含一个子串的查询时最好采用“%”而不用“*”,用“*”的时候只在开头或者只在结尾时,而不能两端全由“*”代替任意字符的情况下。

转载于:https://www.cnblogs.com/jinxiang1224/p/8468258.html

相关文章:

  • 世界上应该珍惜的五个人
  • firewall 相关命令
  • 数据挖掘方法论crisp-DM
  • 欢迎使用CSDN-markdown编辑器
  • 数据挖掘方法论-SEMMA
  • C++按行读取和写入文件
  • 数据挖掘常见分析方法
  • Xcode多种Build Configuration配置使用
  • 统计分析方法分类
  • oracle sql*plus
  • 多个选项选中某一个的效果(用到siblings()方法)
  • 安装centos7最小化安装
  • sql*plus spool
  • oracle体系架构
  • 富文本 文字图片点击,(TextView)
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • CAP 一致性协议及应用解析
  • es6(二):字符串的扩展
  • Java 内存分配及垃圾回收机制初探
  • Less 日常用法
  • linux安装openssl、swoole等扩展的具体步骤
  • Travix是如何部署应用程序到Kubernetes上的
  • 从输入URL到页面加载发生了什么
  • 嵌入式文件系统
  • 如何优雅的使用vue+Dcloud(Hbuild)开发混合app
  • 小李飞刀:SQL题目刷起来!
  • 以太坊客户端Geth命令参数详解
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • 分布式关系型数据库服务 DRDS 支持显示的 Prepare 及逻辑库锁功能等多项能力 ...
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (附源码)计算机毕业设计高校学生选课系统
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (一)RocketMQ初步认识
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (转)linux 命令大全
  • (转载)(官方)UE4--图像编程----着色器开发
  • .mysql secret在哪_MySQL如何使用索引
  • .net core IResultFilter 的 OnResultExecuted和OnResultExecuting的区别
  • .NET Standard 支持的 .NET Framework 和 .NET Core
  • .net Stream篇(六)
  • .NET Windows:删除文件夹后立即判断,有可能依然存在
  • .net 怎么循环得到数组里的值_关于js数组
  • .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)...
  • /usr/bin/python: can't decompress data; zlib not available 的异常处理
  • [ Linux Audio 篇 ] 音频开发入门基础知识
  • [20160902]rm -rf的惨案.txt
  • [Android Pro] Notification的使用
  • [C# 网络编程系列]专题六:UDP编程
  • [c#基础]DataTable的Select方法
  • [CareerCup] 17.8 Contiguous Sequence with Largest Sum 连续子序列之和最大
  • [HJ73 计算日期到天数转换]
  • [IE编程] IE中使网页元素进入编辑模式
  • [Java]快速入门优先队列(堆)手撕相关面试题