- 本文地址: https://www.yangdx.com/2019/02/12.html
- 转载请注明出处
MySQL函数FIND_IN_SET语法定义如下:
- 语法:FIND_IN_SET(str, strlist)
- 解释:如果字符串str位于由N个子字符串组成的字符串列表strlist中,则返回1到N范围内的值。 strlist列表是一系列子串以英文逗号(,)拼接而成的字符串。 如果第一个参数是常量字符串而第二个参数是SET类型的列,则FIND_IN_SET()函数被优化为使用位算术。 如果str不在strlist中,或者strlist是空字符串,则返回0。 如果任一参数为NULL,则返回NULL。 如果第一个参数包含英文逗号(,)字符,则此函数无法正常工作。
应用举例如下:
mysql> SELECT FIND_IN_SET('a', 'a,b,c,d');
+-----------------------------+
| FIND_IN_SET('a', 'a,b,c,d') |
+-----------------------------+
| 1 |
+-----------------------------+
mysql> SELECT FIND_IN_SET('b', 'a,b,c,d');
+-----------------------------+
| FIND_IN_SET('b', 'a,b,c,d') |
+-----------------------------+
| 2 |
+-----------------------------+
mysql> SELECT FIND_IN_SET('f', 'a,b,c,d');
+-----------------------------+
| FIND_IN_SET('f', 'a,b,c,d') |
+-----------------------------+
| 0 |
+-----------------------------+
mysql> SELECT FIND_IN_SET(NULL, 'a,b,c,d');
+------------------------------+
| FIND_IN_SET(NULL, 'a,b,c,d') |
+------------------------------+
| NULL |
+------------------------------+
假设有个表tb_follow,结构如下:
uid(用户ID) | follow_list(该用户关注的人列表) |
---|---|
21 | 18,23,26,35,50,66,127 |
22 | 10,12,21,47,56,94,100 |
查询35号用户是否被21号用户关注:
mysql> SELECT FIND_IN_SET(35, follow_list) FROM tb_follow WHERE uid=21;
+------------------------------+
| FIND_IN_SET(35, follow_list) |
+------------------------------+
| 4 |
+------------------------------+
查询结果为4,表示35号用户在21号用户关注列表的第4个位置。
快来评论一下吧!
发表评论