【数据库】模糊查询[通俗易懂]

【数据库】模糊查询[通俗易懂]【数据库】模糊查询

大家好,又见面了,我是你们的朋友全栈君。

  最近在项目中用到了模糊查询,之前对SQL的模糊查询也没有一个全面的认识,所以今天就跟大家一起学习一下。

  数据库的查询操作包括精确查询和模糊查询,精确查询大家都很熟悉,where条件后的字段等于某个值,模糊查询则使用like代替等号。比如说根据车牌号分别实现精确查询和模糊查询:

/*精确查询*/
SELECT * FROM `whitelist` WHERE platenumber = '京LYH001';
/*模糊查询*/
SELECT * FROM `whitelist` WHERE platenumber LIKE '京%'

  在数据库中模糊查询主要有四种,分别是:

1.%:表示任意0个或多个字符。可匹配任意类型和长度的字符。

/*查询以‘京’开头的车牌号*/
SELECT platenumber FROM `whitelist` WHERE platenumber LIKE '京%';
/*查询以‘京’结尾的车牌号*/
SELECT platenumber FROM `whitelist` WHERE platenumber LIKE '%京';
/*查询车牌号中任意地方包含‘京’的车牌号*/
SELECT platenumber FROM `whitelist` WHERE platenumber LIKE '%京%';

2._:表示任意单个字符。

/*查询以‘晓洁’结尾并且姓名是三个字的车主,查询结果是李晓洁,张晓洁*/
SELECT NAME FROM carowner WHERE NAME LIKE '_晓洁';
/*查询以‘李晓’开头并且姓名是三个字的车主,查询结果是李晓洁,李晓璐*/
SELECT NAME FROM carowner WHERE NAME LIKE '李晓_';
/*查询中间是‘晓’并且姓名是三个字的车主,查询结果是李晓洁,张晓洁,李晓璐*/
SELECT NAME FROM carowner WHERE NAME LIKE '_晓_';
/*查询以‘李’开头并且姓名是三个字的车主,查询结果是李晓洁,李晓璐,李东海*/
SELECT NAME FROM carowner WHERE NAME LIKE '李__';

3.[]:表示指定范围([a-f])或集合([abcdef])中的任意单个字符。(适用于sql server,在mysql中无效)

/*下面两条SQL等效,查询结果均为:
  京M00001,京M00002,京M00003,京M00004,京M00005,
  京M00006,京M00007,京M00008,京M00009*/
SELECT platenumber FROM `whitelist` WHERE platenumber LIKE '京M0000[1-9]'
SELECT platenumber FROM `whitelist` WHERE platenumber LIKE '京M0000[123456789]'

4.[^]:表示不属于指定范围([a-f])或集合([abcdef])中的任意单个字符(适用于sql server,在mysql中无效)

/*下面两条SQL等效,查询结果均为:
  京M00006,京M00007,京M00008,京M00009
  不包含以1-5结尾的车牌号*/
SELECT platenumber FROM `whitelist` WHERE platenumber LIKE '京M0000[^1-5]'
SELECT platenumber FROM `whitelist` WHERE platenumber LIKE '京M0000[^12345]'

  如果是查询内容中包含了特殊字符,比如”%”、”_”、”[“、”]”,我们应该怎么查询呢?很简单,只要将特殊字符放在中括号”[]”中就可以正常查询。(适用于sql server,mysql中无效)

符号 含义
LIKE ‘5[%]’ 5%
LIKE ‘[_]n’ _n
LIKE ‘[a-cdf]’ a、b、c、d 或 f
LIKE ‘[-acdf]’ -、a、c、d 或 f
LIKE ‘[ [ ]’ [
LIKE ‘]’ ]
LIKE ‘abc[_]d%’ abc_d 和 abc_de
LIKE ‘abc[def]’ abcd、abce 和 abcf

   

  总结一下:% 匹配0个或多个任意字符;_ 匹配任意单个字符;[] 匹配一个范围;[^] 排除一个范围。       以上是关于模糊查询的一些简单的认识,还有人说可以用正则表达式实现模糊查询,这个也可以研究一下。另外需要注意的是,上面的介绍都适用于SQL Server,在mysql中则只可以用”%”和”_”实现模糊查询多个或单个字符。


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/105668.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • dos2unix命令将dos文件转换为unix格式

    dos2unix命令将dos文件转换为unix格式使用git的时候碰到git将unix换行符转换为windows换行符的问题,需要使用dos2unix命令将文件转换为unix格式。dos2unix命令用来将DOS格式的文本文件转换成UNIX格式的(DOS/MACtoUNIXtextfileformatconverter)。DOS下的文本文件是以\r\n作为断行标志的,表示成十六进制就是0D0A。而Unix下的文本文件是以\n作为断行

  • datax(23):dataX调优[通俗易懂]

    datax(23):dataX调优[通俗易懂]调优前需要先知道datax任务的执行过程;一、调优方向网络本身的带宽等硬件因素造成的影响;DataX本身的参数;即当觉得DataX传输速度慢时,需要从上述两个个方面着手开始排查。二、网络本身的带宽等硬件因素造成的影响此部分主要需要了解网络本身的情况,即从源端到目的端的带宽是多少(实际带宽计算公式),平时使用量和繁忙程度的情况,从而分析是否是本部分造成的速度缓慢。以下提供几个思路。1,可使用从源端到目的端scp,pythonhttp,nethogs等观察实际网络及网卡速度;2,结合.

  • Ubuntu 安装使用git

    Ubuntu 安装使用git

  • Java数据结构与算法入门

    Java数据结构与算法入门第一部分:Java数据结构要理解Java数据结构,必须能清楚何为数据结构?数据结构:Data_Structure,它是储存数据的一种结构体,在此结构中储存一些数据,而这些数据之间有一定的关系。而各数据元素之间的相互关系,又包括三个组成成分,数据的逻辑结构,数据的存储结构和数据运算结构。而一个数据结构的设计过程分成抽象层、数据结构层和实现层。数据结构在Java的语言体系中按逻辑结构可以分为两大类:线…

  • 缺陷报告流程_缺陷报告有统一的模板

    缺陷报告流程_缺陷报告有统一的模板1.缺陷1.1什么是缺陷软件缺陷就是通常说的Bug,它是指在软件中(包括文档和程序)存在的影响软件正常运行的问题。1.2缺陷产生的原因 需求不明确和变更(沟通不充分产生) 软件结构复杂(架构不合理,认知不到位) 编码问题(程序员都是培训的,太菜了) 项目期限短(时间问题,越快越忙越出错) 使用新技术(不是最新的才是最好的,大家都知道老人活好) 1.3缺陷分类1.3.1测试种类分类 界面类 功能类 性能类 安

  • 多参数sp_executesql 函数的使用范例

    多参数sp_executesql 函数的使用范例终于搞定sp_executesql包含输出的多参数的调用,网上竟然没有很好的参考   set@sql=Nselect@I_ZSL=sum(I_SL),@I_ZYZ=sum(I_YZ),@I_ZZJ=sum(I_LJZJ),@I_ZJZ=(sum(I_YZ)-sum(I_LJZJ))fromV_GZ_SGZ_GZINFO_TYBwhereV_DW_DM=

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号