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必须以","分割开。这个在小示例中有过演示。

猜你喜欢

转载自www.cnblogs.com/juncaoit/p/9440287.html
013