• 让天下没有难学的技术
    多数学员都来自推荐,这就是口碑的力量

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

模糊查询

#五、模糊查询

#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培训课程视频供广大学员下载学习

原文链接:http://www.atguigu.com/jsfx/14085.html

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注