mysql判断一个集合中是否存在于另一个集合

本文介绍如何使用自定义函数IS_INCLUDE()来检测特定数据集(如姓名组合)是否包含在另一个数据集中,通过实例演示如何在(2)和(3)中进行查找。函数返回1表示存在,0表示不存在,适用于前端、后端开发的数据比较场景。
摘要由CSDN通过智能技术生成

比如有以下数据
(1)“张三,李四”
(2)“张三,李四,王五”
(3) “赵六,赵三”

怎样判断(2)中存在(1)中的数据
怎样判断(3)中不存在(1)中的数据



增加函数

DELIMITER $$
CREATE FUNCTION `IS_INCLUDE` (setA longtext,setB longtext) RETURNS int(1)
BEGIN
DECLARE idx INT DEFAULT 0 ;
DECLARE len INT DEFAULT 0;
DECLARE llen INT DEFAULT 0;
DECLARE clen INT DEFAULT 0;
DECLARE tmpStr longtext;
DECLARE curt longtext;
SET len = LENGTH(setB);
WHILE idx < len DO
SET idx = idx + 1;
SET tmpStr = SUBSTRING_INDEX(setB,",",idx);
SET clen = LENGTH(tmpStr);
IF idx = 1 THEN SET curt = tmpStr;
ELSE SET curt = SUBSTRING(setB,llen+2,clen-llen-1);
END IF;
IF FIND_IN_SET(curt,setA) > 0 THEN RETURN 1;
END IF;
IF clen <= llen THEN RETURN 0;
END IF;
SET llen = clen;
END WHILE;
RETURN 0;
END $$;

调用
在这里插入图片描述
返回1,则代表存在

在这里插入图片描述
返回0,则代表不存在

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值