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

93次阅读

共计 702 个字符,预计需要花费 2 分钟才能阅读完成。

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

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

有一个利用类型表, 表中有 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)

正文完
 0