前端时间在写SQL的时候发现需要使用 函数库中的 find_in_set() 函数,那么今天我们就来聊聊这个函数库的用法吧。
select FIND_IN_SET(str,strlist) from DUAL
find_in_set在英文单词上了解来看他是 --- > 有请我们的翻译上场
你看的没错, 在集合中查找, 那么我们是怎么在集合中查找的呢?
看这个函数的参数 FIND_IN_SET(str,strlist) 有两个, 一个是str, 一个是strlist
从单词的英文意义上来说, strlist是个那个集合,那么既然是集合,为什么会是个串呢, 所以它应该是有格式要求的。
大概意义就是从strList中找str串, 如果找到了, 就返回找到的那个strlist具体的那个坐标位置,没找到的话返回0, 具体的话看下面的SQL查询。
上图!!!
select FIND_IN_SET("zhangsan","zhangsan,lisi") as findName from DUAL
我们可以看到, zhangsan返回了第一个位置,lisi返回了第二个位置, 后面的 list 其实他是通过 逗号 进行分割的,这里注意一下格式。
通过数据观察到, 其实后者(strlist) 就是一个已 逗号 分割的 集合 然后去全匹配 前者(str)字符串, 匹配到了就返回具体对应的 坐标。
这些都是正确的数据, 那么我们展示几种不正确的数据。
select FIND_IN_SET("zhang","zhangsan,lisi") as findName from DUAL
匹配逗号前后的部分的数据, 不正确 。
后者是 中文逗号, list的分割应该不正确。
一下几种是出现null的情况, 大家得注意了
这种前后本身的字符串本身就是null, 也不能算错, 本身就是null
特别注意: 就是strlist中, 他是以 英文逗号 进行分割的哟, 在开发的过程中千万不要大意,要时时刻刻进行数据的校验呦