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:元素匹配符

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

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值