zoukankan      html  css  js  c++  java
  • mysql中find_in_set函数解决多级id查找问题

    数据库中某个字段我以字符串存储,同时又以","隔开的。如果想要查询这个字段中包含某个字符串该怎么查询?如果使用Like的话,想要查询包含2这个字符串的,会把包含12、22的值查询出来,

    后来发现了find_in_set()函数。

    MySQL手册中find_in_set函数的语法解释:

    FIND_IN_SET(str,strlist)

    str 要查询的字符串

    strlist 字段名 参数以”,”分隔 如 (1,2,6,8,10,22),我们来试试

    CREATE TABLE users(
    id int(6) NOT NULL AUTO_INCREMENT,
    name VARCHAR(20) NOT NULL,
    
    -- 权限id集合
    
    authority_ids VARCHAR(50) NOT NULL,
    PRIMARY KEY (id)
    );
    
    INSERT INTO users(name, authority_ids) VALUES('张三','1,2,12'); 
    INSERT INTO users(name, authority_ids) VALUES('李四','11,22,32');

    使用like查询,

    SELECT * FROM users WHERE authority_ids LIKE '%2%';

    结果把包含22和32的都查出来了

     使用FIND_IN_SET查询, 

    SELECT * FROM users WHERE FIND_IN_SET(2,authority_ids);

    结果仅仅是查询到了包含2的

  • 相关阅读:
    类加载器
    hibernate笔记
    windows笔记
    maven笔记
    mysql笔记
    jsonp使用
    [ZJU 1010] Area
    [ZJU 1004] Anagrams by Stack
    [ZJU 1003] Crashing Balloon
    [ZJU 1002] Fire Net
  • 原文地址:https://www.cnblogs.com/kiwi-deng/p/12868699.html
Copyright © 2011-2022 走看看