关于mysql:mysql中findinset函数的使用

这是我最近新接触到的一个函数,

我在我的项目中的应用场景是这样的:

有一个利用类型表,表中有parentId字段和parentIds字段,前者为父级id,后者为多级父级id,在库中都是varchar类型,parentIds由多个父级id拼接而成由”,”分隔.

组长告知我能够应用该函数,就去进行了理解与应用.

语法

FIND_IN_SET(str,strlist)

定义

  1. 如果字符串str在由多个子链组成的字符串列表strlist中,则返回值的范畴在1到N之间。
  2. 一个字符串列表就是一个由一些被‘,’符号离开的自链组成的字符串。
  3. 如果第一个参数是一个常数字符串,而第二个是typeSET列,则FIND_IN_SET()函数被优化,应用比特计算。
  4. 如果str不在strlist或strlist为空字符串,则返回值为0。
  5. 如任意一个参数为NULL,则返回值为NULL。这个函数在第一个参数蕴含一个逗号(‘,’)时将无奈失常运行。

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

示例:SELECT FIND_IN_SET(‘b’,’a,b,c,d’); //返回值为2,即第2个值

例子

有个文章表外面有个type字段,它存储的是文章类型,有 1头条、2举荐、3热点、4图文等等 。
当初有篇文章他既是头条,又是热点,还是图文,type中以 1,3,4 的格局存储。那咱们如何用sql查找所有type中有4的图文类型的文章呢?
这就能够应用 find_in_set 了。以下为援用的内容:
select * from article where FIND_IN_SET('4',type)

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理