爱生活、爱运动、爱分享、爱折腾、爱编程。

mysql判断一个字符串集在包含另一个字符串集的自定义方法

最近在做开发一块业务,碰到了一些棘手的问题,A表的字符串集数据要被B表里的C表包含A表数据并进行分页,大致意思就是 多对多的数据并且是包含才查询出来,让我着实在头大。

判断一个字符串集在包含另一个字符串集

比如一个A集合是这样的

1,4,8

B集合

1,2,3,8,4

那么需求就是判断A集合是否被B集合包含,直接贴上函数

CREATE DEFINER=`root`@`%` FUNCTION `find_str_in_set`(strA VARCHAR(500),strB VARCHAR(5000)) RETURNS tinyint(1)
BEGIN
	DECLARE one_str VARCHAR(100);
	DECLARE result BOOLEAN DEFAULT TRUE;
	DECLARE Done INT DEFAULT 0;
	DECLARE first_strs CURSOR FOR SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(strA,',',m.help_topic_id+1),',',-1) AS one_str
			FROM mysql.`help_topic` m WHERE m.help_topic_id < (LENGTH(strA) - LENGTH(REPLACE(strA,',',''))+1);
	DECLARE CONTINUE HANDLER FOR NOT FOUND SET Done =1; 
	IF(strA = '' OR strA IS NULL ) THEN RETURN TRUE; END IF;
	IF(strB IS NULL ) THEN  RETURN FALSE; END IF ;
	IF(strA != '' AND strA IS NOT NULL AND strB != '' AND strB IS NOT NULL)THEN
		OPEN first_strs;
		flag_loop:LOOP
		FETCH  first_strs INTO one_str;
		IF Done =1 THEN LEAVE flag_loop ; END IF ;
		IF NOT FIND_IN_SET(one_str,strB) THEN SET result = FALSE;END IF;
		END LOOP flag_loop;
		CLOSE first_strs;
	END IF;
	RETURN result;
END

执行完上面代码接着就可以调用方法

SELECT find_str_in_set(‘1,4,8′,’1,2,3,8,4’) FROM DUAL;

1

赞(0)
(转载本站文章请注明作者和出处 ,请勿用于任何商业用途)Mydrn爱生活爱分享 » mysql判断一个字符串集在包含另一个字符串集的自定义方法

评论 抢沙发

评论前必须登录!