mysql中find_in_set()函数

mysql中find_in_set()函数:

如果字符串str在由N个子字符串组成的字符串列表strlist中,则返回1到N范围内的值。字符串列表是由,个字符分隔的子字符串组成的字符串。如果第一个参数是常量字符串,第二个参数是SET类型的列,则FIND_IN_SET()函数将优化为使用位算术。如果str不在strlist中或strlist是空字符串,则返回0。如果任一参数为NULL,则返回NULL。如果第一个参数包含逗号(,)字符,则此函数无法正常工作。

SELECT FIND_IN_SET('b', 'a,b,c,d');//2

find_in_set()和like的区别:

CREATE TABLE `tb_user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_name` varchar(50) NOT NULL COMMENT '用户姓名',
`roles` varchar(100) NOT NULL COMMENT '用户角色',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
INSERT INTO tb_user(user_name, roles) VALUES('小爱','1,2,3,8,88');
INSERT INTO tb_user(user_name, roles) VALUES('小洪','1,108');
INSERT INTO tb_user(user_name, roles) VALUES('测试','2,108');
INSERT INTO tb_user(user_name, roles) VALUES('peng','100,101');
SELECT * FROM tb_user WHERE roles LIKE '%8%';

在这里插入图片描述

SELECT * FROM tb_user WHERE FIND_IN_SET(8,roles);

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值