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;

文章转载于尚硅谷官网 www.atguigu.com

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值