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

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

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

  最近在项目中用到了模糊查询,之前对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中则只可以用”%”和”_”实现模糊查询多个或单个字符。


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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Redis–各个数据类型最大存储量

    Redis–各个数据类型最大存储量

    2021年11月3日
    48
  • 对PS2遥控手柄与stm32单片机通信的理解(结合平衡小车之家的说明和程序)

    对PS2遥控手柄与stm32单片机通信的理解(结合平衡小车之家的说明和程序)为了更好地应用PS2遥控手柄,我想尽可能理解一下它与stm32单片机间通信控制的过程,首先看了平衡小车之家给的PS2遥控手柄使用说明,讲解的内容比较简洁,光凭这个说明不能很轻易地理解配套的程序逻辑,接下来结合平衡小车之家的程序内容对照说明解释一下我的理解。因是个人理解并非官方说明,如有误请帮助指出改正,非常感谢!一、自己看一遍说明在看程序之前要先看一下说明里的介绍,大致了解一下。说明及源码:…

    2022年5月2日
    46
  • 如何免费申请博客 用WordPress建设网站

    如何免费申请博客 用WordPress建设网站如何用WordPress搭建博客  10年前左右开始兴起第一波互联网浪潮,博客作为一种新型的社交和阅读方式进入人们的视野,那一段时期是博客的黄金时代。现在,人们说“博客已死”。因为大概在7、8年前第二波互联网浪潮突然出现,且来势汹汹——移动互联网的时代到来了。人们被各种新型的社交媒体所吸引,单单手机APP就使人们忙的目不暇接。人们的选择越来越多,于是碎片化的娱乐逐渐成为人们社交休闲方式。人们不…

    2022年7月21日
    15
  • 用Spring提高java观察者模式灵活性

    用Spring提高java观察者模式灵活性

    2021年12月1日
    37
  • 内网穿透 隧道_ping隧道

    内网穿透 隧道_ping隧道本文研究ICMP隧道的一个工具,icmp_tran

    2022年10月18日
    0
  • 几种运维工具的对比

    运维行业有句话:“无监控、不运维”,是的,一点也不夸张,监控俗称“第三只眼”。没了监控,什么基础运维,业务运维都是“瞎子”。所以说监控是运维这个职业的根本。尤其是在现在DevOps这么火的时候,用监控数据给自己撑腰,这显得更加必要。有人说运维是背锅侠,那么,有了监控,有了充足的数据,一切以数据说话,运维还需要背锅吗,所以作为一个运维工程师,如何构建一套监控系统是你的第一件工作。 …

    2022年4月8日
    108

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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