BIG阳
您也可以使用此自定义功能CREATE FUNCTION SPLIT_STR( x VARCHAR(255), delim VARCHAR(12), pos INT)RETURNS VARCHAR(255)RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos), LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1), delim, ''); DELIMITER $$ CREATE FUNCTION `FIND_SET_EQUALS`(`s1` VARCHAR(200), `s2` VARCHAR(200)) RETURNS TINYINT(1) LANGUAGE SQL BEGIN DECLARE a INT Default 0 ; DECLARE isEquals TINYINT(1) Default 0 ; DECLARE str VARCHAR(255); IF s1 IS NOT NULL AND s2 IS NOT NULL THEN simple_loop: LOOP SET a=a+1; SET str= SPLIT_STR(s2,",",a); IF str='' THEN LEAVE simple_loop; END IF; #Do check is in set IF FIND_IN_SET(str, s1)=0 THEN SET isEquals=0; LEAVE simple_loop; END IF; SET isEquals=1; END LOOP simple_loop; END IF; RETURN isEquals; END; $$ DELIMITER ;SELECT FIND_SET_EQUALS('a,c,b', 'a,b,c')- 1SELECT FIND_SET_EQUALS('a,c', 'a,b,c')- 0SELECT FIND_SET_EQUALS(null, 'a,b,c')- 0