# 自定义函数-逗号分隔字符串之间的包含关系
DROP FUNCTION IF EXISTS `IN_SET`;
DELIMITER //
CREATE FUNCTION `IN_SET` (setA TEXT,setB TEXT) RETURNS INT(1)
BEGIN
DECLARE rtval INT DEFAULT 0 ;
DECLARE idx INT DEFAULT 0 ;
DECLARE len INT DEFAULT 0;
DECLARE llen INT DEFAULT 0;
DECLARE clen INT DEFAULT 0;
DECLARE tmpStr TEXT;
DECLARE curt TEXT;
DECLARE debugStr TEXT;
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 LENGTH(curt) > 0 THEN
IF FIND_IN_SET(curt,setA) > 0 THEN SET rtval=1;
ELSE RETURN 0;
END IF;
END IF;
SET llen = clen;
END WHILE;
RETURN rtval;
END;
//
DELIMITER ;
SELECT IN_SET("ES3048RL,K7305,K8773,K9231,K9233","ES3048RL,K7305,K8773,K9231") AS IS_IN_SET;