FIND_IN_SET(),mysql怎么查一个字符是否包含在某个字符串中

比如我们的数据库中有一个表A,表中有以下字段及数据

其中area_id中存的是一串【用逗号隔开的各个省id】的字符,现在我们想做这样一件事,我们要把area_id中包含省id为4的那条数据找出来。

怎么找?

select * from A where area_id '%4%'?,会发生什么?试试看

FIND_IN_SET(),mysql怎么查一个字符是否包含在某个字符串中_第1张图片

从图中可以看出,它把area_id中只要有4的数据都给查出来了,不管是4还是34。但是我们要的是4而不是34。

所以,不管怎么变换like后面单引号里的内容,结果总是不尽人意的,所以,要怎么查?用FIND_IN_SET()函数。

语法:FIND_IN_SET(str,strlist)。

定义

1. 假如字符串str在由N子链组成的字符串列表strlist中,则返回值的范围在1到N之间。

2. 一个字符串列表就是一个由一些被‘,’符号分开的自链组成的字符串。

3. 如果第一个参数是一个常数字符串,而第二个是typeSET列,则FIND_IN_SET()函数被优化,使用比特计算。

4. 如果str不在strliststrlist为空字符串,则返回值为0。

5. 如任意一个参数为NULL,则返回值为NULL。这个函数在第一个参数包含一个逗号(‘,’)时将无法正常运行。

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

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

(注,该定义搬运自https://www.cnblogs.com/mytzq/p/7090197.html)

回归正题,我们这个sql语句怎么写?怎么找出area_id包含4的数据?

应用如下:FIND_IN_SET(),mysql怎么查一个字符是否包含在某个字符串中_第2张图片

释义:从A表中查询数据,条件是area_id中包含4(或者解释为4包含于area_id)中

你可能感兴趣的:(FIND_IN_SET(),mysql怎么查一个字符是否包含在某个字符串中)