mysql判断两个逗号分隔字符串是否有交集 在⽹上了⼀些,多多少少都有点问题,这⾥记录⼀下我修改后的代码:
BEGIN
DECLARE idx INT DEFAULT0 ; -- B 集合单元索引
DECLARE len INT DEFAULT0;-- B 集合表达式长度
DECLARE llen INT DEFAULT0;-- 最后检查位置
DECLARE clen INT DEFAULT0;-- 当前检查位置
DECLARE tmpStr varchar(255);-- 临时检查数据集
DECLARE curt varchar(255);-- B 当前检查的单元
SET len= LENGTH(setB);
WHILE idx <len DO
SET idx = idx +1;
SET tmpStr = SUBSTRING_INDEX(setB,",",idx);
SET clen = LENGTH(tmpStr);
-- 获取当前 setB 中的单元
IF idx =1THEN SET curt = tmpStr;
ELSE SET curt =SUBSTRING(setB,llen+2,clen-llen-1);
END IF;
-- 检查是否存在于 setA 中
IF curt !=''and FIND_IN_SET(curt,setA) >0THEN RETURN1;
END IF;
-- 当前检查终点与上次检查终点相同则跳出
IF clen <= llen THEN RETURN0;
END IF;
SET llen = clen;
END WHILE;
RETURN0;
END
保存成函数之后,执⾏测试案例:
select INTE_ARRAY("8,9","8,22,33,7") as is_inte_array;
字符串截取逗号前面的-- 返回1
select INTE_ARRAY("1,9","8,22,33,7") as is_inte_array;
-- 返回0
select INTE_ARRAY(",","8,22,33,7") as is_inte_array;
-
- 返回0(很多⽹上提供的解决⽅案没有考虑到这种情况)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论