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

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

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

  最近在项目中用到了模糊查询,之前对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)


相关推荐

  • offsetHeight, clientHeight与scrollHeight的区别

    offsetHeight, clientHeight与scrollHeight的区别在网上搜了一下,结论非常笼统,讲IE从不讲版本,因此自己做了测试并上传结论。以下结论皆是在标准模式下测试通过的,没有测试quirk模式。clientHeight大部分浏览器对clientHeight都没有什么异议,都认为是内容可视区域的高度,也就是说页面浏览器中可以看到内容的这个区域的高度,即然是指可看到内容的区域,滚动条不算在内。但要注意padding是算在内。其计算方式

  • errorcode=-4499 sqlstate=08001_math方法

    errorcode=-4499 sqlstate=08001_math方法java.sql.SQLException:java.lang.ClassCastException:java.math.BigIntegercannotbecasttojava.lang.Long

  • 交互式脚本_交互式和脚本式的区别

    交互式脚本_交互式和脚本式的区别带你打开脚本的大门,领略语言之美

  • linux修改文件名称 rename_shell重命名文件指令

    linux修改文件名称 rename_shell重命名文件指令Linux命令中的rename命令主要用于给文件重命名,与mv命令有些类似,但rename可以对批量文件进行重命名,而mv命令则只能对单个文件重命名,下面就给大家详细介绍下Linuxrename命令的使用方法吧。Linux的rename命令有两个版本,一个是C语言版本的,一个是Perl语言版本的,早期的Linux发行版基本上使用的是C语言版本的,现在已经很难见到C语言版本的了,由于历史原因,…

  • Python 环境安装教程(Windows)

    写于2018-2-6  没错,我就是连安装Python环境都要教程的人QAQ,毕竟我打开英文页面一脸懵逼,然后还去偷偷查教程,,Ծ‸Ծ,,。  1.Python下载链接,点击链接,然后选择Windows下载页面。    2.红箭头指的是不同版本这个肯定知道吧,然后x64系统的就下载红框框里的这个名字的文件。下载时也可以下载zip的版本(Windowsx86-64e

  • 哪条区块链可以运行DAPP_区块链应用开发入门

    哪条区块链可以运行DAPP_区块链应用开发入门在区块链上编程:DApp 开发简介

发表回复

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

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