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

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

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

  最近在项目中用到了模糊查询,之前对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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • UICollectionView的单选

    UICollectionView的单选//点击选定-(void)collectionView:(UICollectionView*)collectionViewdidSelectItemAtIndexPath:(NSIndexPath*)indexPath{    JFCollectionViewCell*cell=(JFCollectionViewCell*)[collection

    2022年5月29日
    40
  • Oracle listagg去重distinct三种方法总结

    Oracle listagg去重distinct三种方法总结一、简介最近在工作中,在写oracle统计查询的时候,遇到listagg聚合函数分组聚合之后出现很多重复数据的问题,于是研究了一下listagg去重的几种方法,以下通过实例讲解三种实现listagg去重的方法。二、方法首先还原listagg聚合之后出现重复数据的现象,打开plsql,执行如下sql:selectt.department_namedepname,…

    2025年9月27日
    1
  • java随机生成六位密码_java怎样实现密码的输入

    java随机生成六位密码_java怎样实现密码的输入importjava.util.Random;publicclasstest{/***@paramargs*/publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubSystem.out.println(genRandomNum(10));}/***生成随即密码*@parampwd_len…

    2025年7月12日
    3
  • 修改idea的背景颜色_ps更换证件照背景颜色

    修改idea的背景颜色_ps更换证件照背景颜色在Idea里面修改背景颜色1、点击左上角File,然后找到Settings2、搜索框搜索Font然后后找到Appearance设置右面的Theme即可改变为想要的背景色

    2022年8月26日
    8
  • 网络协议的三要素是什么?各有什么含义?_网络协议三要素中语法规定了

    网络协议的三要素是什么?各有什么含义?_网络协议三要素中语法规定了网络协议的三要素是什么?1、语法语法用来规定信息格式。数据及控制信息的格式、编码及信号电平等。2、语义语义用来说明通信双方应当怎么做。用于协调与差错处理的控制信息。3、定时定时(时序)定义

    2022年8月4日
    5
  • 从智能家居的发展看对讲企业的定位

    从智能家居的发展看对讲企业的定位当你在浏览最近的热词榜单时,智能家居会位居其中。自智慧城市建设的大潮来袭之后,智能家居是“首当其冲”,自然是占了个大便宜!同时,楼宇对讲企业也迎来了春天。相信好多人都知道楼宇对讲,它最早是出现在高层住宅、公寓大厦内外,用来传递户内与单元门之间的信息,并控制防盗门,甚至可在紧急情况下住户通过它向安保值班室报警。它是智能家居体系下最重要的一部分。如今面对智…

    2022年6月22日
    26

发表回复

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

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