zoukankan      html  css  js  c++  java
  • Mysql字符串字段中是否包含某个字符串,用 find_in_set

    有这样一个需求,在Mysql数据库字符串字段(权限)中,有范围在 1 到 N 之间代表不同权限的值,分别被‘,’分开,现在要取出具有某权限的所有成员列表。

    创建表:

     
    1 CREATE TABLE users(id int(6) NOT NULL AUTO_INCREMENT,PRIMARY KEY (id),name VARCHAR(20) NOT NULL,limits VARCHAR(50) NOT NULL);

    添加数据:

    1 INSERT INTO users(name, limits) VALUES('小张','1,2,12');
    2 INSERT INTO users(name, limits) VALUES('小王','11,22,32');

    Mysql 中有些字段是字符串类型的,如何查找其中包含某些字符的记录呢?

    方法一:

     
    1 mysql> SELECT * FROM users WHERE limits like "%2%";
    2 +----+----+--------+
    3 | id |name| limits |
    4 +----+----+--------+
    5 |  1 |小张| 1,2,12 |
    6 +----+----+--------+
    7 |  2 |小王|11,22,32|
    8 +----+----+--------+
    9 2 row in set

    这样第二条数据不具有权限‘2’的用户也查出来了,不符合预期。所以就查阅了手册,利用mysql 字符串函数 find_in_set()

    方法二:

    1 mysql> SELECT * FROM users WHERE find_in_set('2', limits);
    2 +----+----+--------+
    3 | id |name| limits |
    4 +----+----+--------+
    5 |  1 |小张| 1,2,12 |
    6 +----+----+--------+
    7 1 row in set

    这样就能达到我们预期的效果,问题就解决了!

    注意:mysql字符串函数 find_in_set(str1,str2)函数是返回str2中str1所在的位置索引,str2必须以","分割开。

  • 相关阅读:
    使用对象-关系映射持久化数据
    Spring中使用JDBC
    无法正确解析FreeMarker视图
    使用Java配置SpringMVC
    面向切面的Spring
    高级装配
    爬虫简介与request模块
    列表存储本质以及索引为什么从0开始
    列表和字典操作的时间复杂度
    记录腾讯云中矿机病毒处理过程(重装系统了fu*k)
  • 原文地址:https://www.cnblogs.com/kingfly/p/4161921.html
Copyright © 2011-2022 走看看