mysql中find_in_set函数的使用方法

  

mysql中find_in_set函数的使用方法?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

<强>语法

find_in_set (str strlist)

<强>定义

    <李>假如字符串str在由多个子链组成的字符串列表strlist中,则返回值的范围在1到N之间。 <李>一个字符串列表就是一个由一些被“& # 39;符号分开的自链组成的字符串。 <李>如果第一个参数是一个常数字符串,而第二个是排版列,则find_in_set()函数被优化,使用比特计算。 <李>如果str不在strlist或strlist为空字符串,则返回值为0。 <李>如任意一个参数为NULL,则返回值为NULL。这个函数在第一个参数包含一个逗号(' & # 39;)时将无法正常运行。
      李,

strlist:一个由英文逗号”、“链接的字符串,例如:“a, b, c d"该字符串形式上类似于集类型的值被逗号给链接起来。

示例:选择FIND_IN_SET (& # 39; b # 39; & # 39; a, b, c, d # 39;);//返回值为2,即第2个值

<强>例子

有个文章表里面有个类型字段,它存储的是文章类型,有1头条,2推荐,3热点,4图文等等。
现在有篇文章他既是头条,又是热点,还是图文,类型中以1、3、4的格式存储。那我们如何用sql查找所有类型中有4的图文类型的文章呢?

这就可以使用find_in_set了。以下为引用的内容:

 select *(& # 39; 4 & # 39;类型)

<强> FIND_IN_SET()和的区别:

弄个测试表来说明两者的区别

创建表“tb_test”(   “id”int(8)不是零auto_increment,   “名字”varchar(255)不是NULL,   “列表”varchar(255)非空,   主键(“id”)   );   插入“tb_test”值(& # 39;名字# 39;,& # 39;,其总经理吴皓小虎,小秦# 39;);   插入“tb_test”值(2 & # 39;name2& # 39;, & # 39;小虎,,其总经理吴皓小秦# 39;);   插入“tb_test”值(& # 39;name3& # 39;, & # 39;小秦,,其总经理吴皓小虎# 39;);

原来以为mysql可以进行这样的查询:

选择id、名称、列表从tb_test & # 39; daodao& # 39;在(列表);——(一)

 mysql中find_in_set函数的使用方法

实际上这样是不行的,这样只有当列表字段的值等于& # 39;daodao& # 39;时(和前面的字符串完全匹配),查询才有效,否则都得不到结果,即使& # 39;daodao& # 39;真的在列表中。

再来看看这个:

选择id、名称、列表从tb_test & # 39; daodao& # 39;(& # 39;libk& # 39;, & # 39; zyfon& # 39;, & # 39; daodao& # 39;);——(二)

 mysql中find_in_set函数的使用方法

这样是可以的。

这两条到底有什么区别呢?为什么第一条不能取得正确的结果,而第二条却能取得结果。原因其实是(一)中(列表)列表是变量,而(二)中(& # 39;libk& # 39; & # 39; zyfon& # 39;, & # 39; daodao& # 39;)是常量。

所以如果要让(一)能正确工作,需要用

find_in_set ():      选择id、名称、列表从tb_test FIND_IN_SET (& # 39; daodao& # 39;,列表);——(一)的改进版

 mysql中find_in_set函数的使用方法

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

mysql中find_in_set函数的使用方法