zoukankan      html  css  js  c++  java
  • 013 mysql中find_in_set()函数的使用

      在工作中遇见过,对于新知识,在这里写一写文档。

    1.作用

      举个例子,也许不理解,在看完后面的SQL示例,再来看就明白了:

      有个文章表里面有个type字段,它存储的是文章类型,有 1头条、2推荐、3热点、4图文等等 。
      现在有篇文章他既是头条,又是热点,还是图文,type将怎么存储这个信息呢?

      其实,在type中以 1,3,4 的格式存储,就可以表示这个文章的类型了。

      虽然存储了,但是在查询中,怎么办呢?

      例如:那我们如何用sql查找所有type中有4的图文类型的文章呢?因为4在type里面的一个小片段。 

      这个时候,就会用到这个函数。

      select * from article where FIND_IN_SET('4',type)

    2.语法

      FIND_IN_SET(str,strlist)

      参数:一个str,是查询的字符串,一个可能含有str的集合,是字段名。

      返回值:null,或者记录

    3.小测试

      

    4.函数与in的区别

      在读完这个案例的时候,能刚好的理解这个函数的意思,与使用场景。

      SQL语句:

     1 CREATE TABLE `tb_test` (
     2   `id` int(8) NOT NULL auto_increment,
     3   `name` varchar(255) NOT NULL,
     4   `list` varchar(255) NOT NULL,
     5   PRIMARY KEY  (`id`)
     6 );
     7 
     8 INSERT INTO `tb_test` VALUES (1, 'name', 'daodao,xiaohu,xiaoqin');
     9 INSERT INTO `tb_test` VALUES (2, 'name2', 'xiaohu,daodao,xiaoqin,xiaoming');
    10 INSERT INTO `tb_test` VALUES (3, 'name3', 'xiaoqin,daodao,xiaohu');

      效果:

        

      需求:

        查找有xiaoming的记录。

      方式:

        SELECT id,name,list from tb_test WHERE FIND_IN_SET('xiaoming',list);

        

    5.注意点

      mysql字符串函数 find_in_set(str1,str2)函数是返回str2中str1所在的位置索引,str2必须以","分割开。这个在小示例中有过演示。

  • 相关阅读:
    To do list
    2020 上半学期比赛记录
    板子
    Project Euler 1~10 野蛮题解
    卡常火车头
    防止unordered_map 被卡方法
    2019 香港区域赛 BDEG 题解
    2019徐州区域赛 ACEFM 题解 & pollard-rho & miller-rabin & 求出每个子树的重心 板子
    BST-splay板子
    ZJOI2017(2) 游记
  • 原文地址:https://www.cnblogs.com/juncaoit/p/9440287.html
Copyright © 2011-2022 走看看