数据库
首页 > 数据库> > MySQL LIKE 字句使用详情

MySQL LIKE 字句使用详情

作者:互联网

MySQL LIKE 字句

 

我们知道在 MySQL 中使用 SQL SELECT 命令来读取数据, 同时我们可以在 SELECT 语句中使用 WHERE 子句来获取指定的记录。

WHERE 子句中可以使用等号 = 来设定获取数据的条件,如 "runoob_author = 'RUNOOB.COM'"。

但是有时候我们需要获取某个表某个字段含有 "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 匹配/模糊匹配,会与 % 和 _ 结合使用。

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运算符要对字段数据进行逐一扫描匹配,实际执行的效率比较差

 

标签:字符,字句,LIKE,--,MySQL,WHERE,SELECT,name
来源: https://www.cnblogs.com/centersky/p/14265554.html