前言:
在听完 hsy 学长讲完相关的知识点后,把相关的知识总结出来,大家一起学习。
在学习 Mysql 模糊查询时,先来想一下 为什么要有模糊查询 ?
以及 模糊查询带来哪些比较好的地方 ?
当有这些疑问后,带着这些疑问听我娓娓道来。
为什么会有模糊查询的存在?
这点还是比较好理解的,想一下,在日常生活中,你是否会有突然之间怎么也想不起老朋友的名字,只
依稀能够想起姓什么或者姓名中的某个字,这时候你是不是会去通讯录搜索你保留的一些信息,进而
重新想起老朋友(类比一下 QQ 、微信的搜索框)。
模糊查询带来哪些比较好的地方?
相信读完上面的分析,聪明的你已经有所体会:
1、更加贴近生活,也就是我们常说的人性化(越体现人性化的东西存在的时间越长)。
2、性能更好,节省时间。
相信你在读完上面的分析后,已经迫不及待的想知道如何实现神奇的模糊查询啦。
好嘞,干货来啦,
模糊查询常用关键字:
同样的,在使用这些常见关键字时,先来张数据库中的表(以下这张表引用 hsy 学长的数据库表)
- like关键字 – 用的最多的关键字
%:表示任意0个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百 分号(%%)表示。
案例一:
// 将表中 包含 '帅' 的 用户的姓名查找出来
SELECT name FROM user where name LIKE '%帅%'
效果图:
案例二:
注:like '%想%' and like'%你%' ------------------------->(查询包含想也包含你的记录)
SELECT name FROM user where name LIKE '%想%' and name LIKE '%你%'
效果图:
案例三:
注:link '%隔%王%' ----------------->(查询包含隔王的记录,并且隔要在王之前)
select name from user where name like '%隔%王'
效果图:
_: 表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句。
案例一:
//查询包含“见”这个字的记录,且长度为3
SELECT name from user where name like '_见_'
效果图:
案例二:
//查询包含“见”这个字的记录,且它之前是一个内容,后面内容长度不限制
SELECT name from user where name like '_见%'
效果图:
[ ]:表示括号内所列字符中的一个(类似正则表达式)。指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。
案例一:
// like '小刘王]帅' 查询“小帅、刘帅、王帅”
select name from user WHERE name like '[小王刘]帅'
案例二:
注: [ ] 内有一系列字符(01234、abcde之类的)则可略写为“0-4”、“a-e”
SELECT *
FROM user
WHERE NAME
LIKE '小[0-9]气' --中间为1个数字
-----------------------------------------------------------------------------
SELECT *
FROM user
WHERE NAME
LIKE '小[a-z]气' --中间为1个字母,字母大小写可以通过约束设定,不区分大小写
-----------------------------------------------------------------------------
SELECT *
FROM user
WHERE NAME
LIKE '小[0-9a-z]气' --中间为1个字母和和1个数字,字母大小写可以通过约束设定,不区分大小写
-----------------------------------------------------------------------------
SELECT *
FROM user
WHERE NAME
LIKE '小[!0-9]气' --中间不为数字
------------------------------------------------------------------------------
^:表示不在括号所列之内的单个字符。其取值和 [] 相同,但它要求所匹配对象为指定字符以外的任一个字符。
案例一:
注:like '[^小刘王]帅' 查询不是“郝帅、刘帅、王帅”的记录
SELECT *
FROM user
WHERE
NAME LIKE '[^小刘王]帅'