MySQLLIKE字句使用详情
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MySQLLIKE字句使⽤详情
MySQL LIKE 字句
我们知道在 MySQL 中使⽤ SQL SELECT 命令来读取数据,同时我们可以在 SELECT 语句中使⽤ WHERE ⼦句来获取指定的记录。
WHERE ⼦句中可以使⽤等号 = 来设定获取数据的条件,如 "runoob_author = ''"。
但是有时候我们需要获取某个表某个字段含有 "COM" 字符的所有记录,这时我们就需要在 WHERE ⼦句中使⽤ SQL LIKE ⼦句。
LIKE ⼦句中使⽤百分号 %字符来表⽰任意字符,类似于UNIX或正则表达式中的星号 *。
如果没有使⽤百分号 %, LIKE ⼦句与等号 = 的效果是⼀样的。
语法:
SELECT 语句使⽤ LIKE ⼦句从数据表中读取数据的通⽤语法:
LIKE运算符⽤于WHERE表达式中,以搜索匹配字段中的指定内容
--基础语法
SELECT * FROM 表名 WHERE 字段 LIKE "%搜索的元字符"
--查询第⼀个字符是任意字符,第⼆个字符是王开头的学员
SELECT * FROM EMP WHERE NAME LIKE "%王";
SELECT 字段,字段2... FROM 表名 WHERE 字段 AND 字段 LIKE "%查询的元字符"
--演⽰:id = 1 且学员名称第⼀个字符是王开头的所有⼈
select name,department from emp WHERE id = 1 AND `name` LIKE "王%"
--演⽰:查询学员名称第⼀个字符是王开头的所有⼈
select id,name,department from emp WHERE `name` LIKE "王%"
语句模板:
SELECT * FROM 表名 WHERE `字段名` LIKE "%要搜索的元字符" AND 字段名=23 ORDER BY 字段名 DESC
语句解释解义:
* :查询所有字段
LIKE:元素匹配符
AND:指定单个或多个条件,或者⽤OR
ORDER BY:按照某个字段进⾏排序 DESC:降序 ASC:升序
Like 匹配/模糊匹配,会与 % 和 _ 结合使⽤。
1)‘%b’:以a结尾的数据
2)'b%':以b开头的数据
3)‘%b%’:包含b的所有数据
4)'_a_':第三位且中间字符字母是a的
5)'_a':两位且结尾字母是a的数据
6)'a_':两位且开头字母是a的数据
--两位且结尾是a的数据
select id,name,department from emp WHERE `name` LIKE "_a";
--两位且结尾是a的数据
select id,name,department from emp WHERE `name` LIKE "a_";
--三位,第⼆位为a的数据
select id,name,department from emp WHERE `name` LIKE "_a_";
--前三位中间第⼆位包含a的数据
select id,name,department from emp WHERE `name` LIKE "_a_%"
MySQL LIKE 中⽂匹配:
在某些情况下,MySQL进⾏LIKE搜索返回的数据除了符合要求的数据外,往往还会返回许多不相⼲的数据,这时候也需要在LIKE后⾯加上BINARY操作符进⾏⼆进制⽐较
SELECT * FROM username WHERE LIKE BINARY '%⼩%'
注意:
当LIKE匹配时加上BINARY操作符之后,则会严格区分英⽂⼤⼩写,因此检索的内容中如果出现中英⽂混合且需要忽略英⽂⼤⼩写的时候,就会遇见问题,这个时候可以引⼊MySQL中的UPPER()和COUNT()函数:
UPPER() :将英⽂字符转成⼤写,同UCASE()
CONCAT():将多个字符串连接成⼀个字符串
--进⾏中英⽂混合匹配检索且
SELECT * FROM 表名 WHERE UPPER(字段) LIKE BINARY CONCAT('%',UPPER('a中⽂b'),'%');
SELECT * FROM username WHERE UPPER(username) LIKE BINARY CONCAT('%',UPPER('a中⽂b'),'%');
LIKE 的效率:
LIKE运算符要对字段数据进⾏逐⼀扫描匹配,实际执⾏的效率⽐较差。