Java培训MySQL的运算符之模糊查询

发布时间:2020年01月04日作者:atguigu浏览次数:742

模糊查询

#五、模糊查询

#like 和 通配符 一起使用

#like _ 匹配单个字符

#like % 匹配任意个字符

 

#查询名字中有’冰’字的员工信息

SELECT * FROM t_employee WHERE ename LIKE ‘%冰%’;

 

#查询姓李的员工信息

SELECT * FROM t_employee WHERE ename LIKE ‘李%’;

 

#查询姓李,名字就一个字的员工信息

SELECT * FROM t_employee WHERE ename LIKE ‘李_’;

 

#查询李冰冰的信息

SELECT * FROM t_employee WHERE ename LIKE ‘李冰冰’;

通常情况,可以使用FIND_IN_SET()函数或LIKE操作符搜索SET值:

 

    mysql> SELECT * FROM tbl_name WHERE FIND_IN_SET(‘value’,set_col)>0;

 

    mysql> SELECT * FROM tbl_name WHERE set_col LIKE ‘%value%’;

 

    第1个语句找出SET_col包含value set成员的行。第2个类似,但有所不同:它在其它地方找出set_col包含value的行,甚至是在另一个SET成员的子字符串中。

 

    下面的语句也是合法的:

 

    mysql> SELECT * FROM tbl_name WHERE set_col & 1;

 

    mysql> SELECT * FROM tbl_name WHERE set_col = ‘val1,val2’;

 

    第1个语句寻找包含第1个set成员的值。第2个语句寻找一个确切匹配的值。应注意第2类的比较。将set值与’val1,val2’比较返回的结果与同’val2,val1’比较返回的结果不同。指定值时的顺序应与在列定义中所列的顺序相同。

 

如果想要为SET列确定所有可能的值,使用SHOW COLUMNS FROM tbl_name LIKE set_col并解析输出中第2列的SET定义。

有什么实际应用呢?

 

    比如我们设定用户的权限控制,一个用户可能会有多种权限,我们使用所有权限创建一个SET类型的字段,我们不需要用一系列int来定义各种权限了,直接使用一个SET字段即可:

 

    /*

    用户权限permission表

    */

    create table user_permission(

    id int UNSIGNED not null auto_increment,

    user_id int not null ,

    permission set(‘阅读’,’评论’,’发帖’) not null,

    primary key(id),

    unique (user_id)

    );

    desc user_permission;

    insert into user_permission values (0,1,’阅读’),(0,2,’阅读’),(0,3,’阅读,评论’);

    insert into user_permission values (0,4,’阅读,评论,发帖’);

    select *,permission+0 from user_permission;

    select permission from user_permission where user_id=1;

    select * from user_permission where permission & 10;

    SELECT * FROM user_permission WHERE FIND_IN_SET(‘评论’,permission)>0;

想要了解跟多关于Java培训课程内容欢迎关注尚硅谷Java培训课程,尚硅谷除了这些技术文章外还有免费的高质量Java培训课程视频供广大学员下载学习


上一篇:
下一篇:
相关课程

java培训 大数据培训 前端培训 UI/UE设计培训

关于尚硅谷
教育理念
名师团队
学员心声
资源下载
视频下载
资料下载
工具下载
加入我们
招聘岗位
岗位介绍
招贤纳师
联系我们
全国统一咨询电话:010-56253825
地址:北京市昌平区宏福科技园2号楼3层(北京校区)

深圳市宝安区西部硅谷大厦B座C区一层(深圳校区)

上海市松江区谷阳北路166号大江商厦6层(上海校区)

武汉市东湖高新开发区东湖网谷(武汉校区)