Mysql

关注公众号 jb51net

关闭
首页 > 数据库 > Mysql > Mysql FIND_IN_SET函数

Mysql中FIND_IN_SET函数的使用及问题

作者:山茶花开时。

FIND_IN_SET函数用于返回字符串str在字符串列表str_list中的位置,本文主要介绍了Mysql中FIND_IN_SET函数的使用及问题,具有一定的参考价值,感兴趣的可以了解一下

FIND_IN_SET函数用于返回字符串str在字符串列表str_list中的位置,返回一个整数或一个NULL值

语法格式

FIND_IN_SET(str,str_list)

str: 需要查询的字符串

str_list:  需要查询的字符串列表,参数以","分隔,形式如 (1,2,6,8,10,22)

提示Tips

① 如果在 str_list 中没有找到 str,FIND_IN_SET函数返回 0

② 如果 str 或 str_list 为 NULL,FIND_IN_SET函数返回 NULL

③ 如果 str_list 是一个空字符串(""),FIND_IN_SET函数函数返回 0

示例1

-- 1
SELECT FIND_IN_SET("a", "a");
-- 3
SELECT FIND_IN_SET("c", "a,b,c,c,d");
-- 0
SELECT FIND_IN_SET("a", "s,q,l");
-- 0
SELECT FIND_IN_SET("q", "");
-- 5
SELECT FIND_IN_SET("o", "h,e,l,l,o");
-- Null
SELECT FIND_IN_SET("q", null);
-- Null
SELECT FIND_IN_SET(null, "s,q,l");

示例2

导入数据

DROP TABLE IF EXISTS `divisions`;
CREATE TABLE `divisions` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(25) NOT NULL,
  `belts` varchar(200) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4;

INSERT INTO `divisions` VALUES ('1', 'O-1', 'white,yellow,orange');
INSERT INTO `divisions` VALUES ('2', 'O-2', 'purple,green,blue');
INSERT INTO `divisions` VALUES ('3', 'O-3', 'brown,red,black');
INSERT INTO `divisions` VALUES ('4', 'O-4', 'white,yellow,orange');
INSERT INTO `divisions` VALUES ('5', 'O-5', 'purple,green,blue');
INSERT INTO `divisions` VALUES ('6', 'O-6', 'brown,red');
INSERT INTO `divisions` VALUES ('7', 'O-7', 'black');
INSERT INTO `divisions` VALUES ('8', 'O-8', 'white,yellow,orange');
INSERT INTO `divisions` VALUES ('9', 'O-9', 'purple,green,blue');
INSERT INTO `divisions` VALUES ('10', 'O-10', 'brown,red');

divisions表 

问题1:  查询生产皮带包含red belts的部门信息

SELECT name, belts
FROM divisions
WHERE FIND_IN_SET('red', belts);

结果展示 

问题2:  查询生产皮带不包含black belts的部门信息

SELECT name, belts
FROM divisions
WHERE NOT FIND_IN_SET('black', belts);

结果展示

问题3:查找名称为O-1或O-2的部门 

-- 使用FIND_IN_SET
SELECT name, belts
FROM divisions
WHERE FIND_IN_SET(name, 'O-1,O-2');

-- 使用IN运算符
SELECT name, belts
FROM divisions
WHERE name IN ('O-1','O-2');

结果展示

补充扩展知识: column IN ('x', 'y', 'z')表达式与FIND_IN_SET(column, 'x,y,z')效果相同

当你希望将值与数据库中的值列表进行匹配时,可以使用IN运算符; 当你希望将值与数据库中以逗号分隔存储的值列表进行匹配时,可以使用FIND_IN_SET函数

到此这篇关于Mysql中FIND_IN_SET函数的使用及问题的文章就介绍到这了,更多相关Mysql FIND_IN_SET函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文