自定义函数 判断按指定字符分割后的两个字符串集合是否有交集【MySQL】
-
功能介绍
字符串A:'aaa,bbb,ccc'
字符串B:'vvv,uuu,ccc,ttt'
按“,”分割开后两个字符集合间的交集是'ccc'
如果有交集,函数返回值为1(true) -
相关函数
SET GLOBAL log_bin_trust_function_creators = 1;
CREATE FUNCTION `func_get_split_string_total`( x varchar(1000),y varchar(5))
RETURNS int(11)
BEGIN
return 1+(length(x) - length(replace(x,y,'')));
END;
CREATE FUNCTION `func_get_split_string`( x varchar(1000),y varchar(5),z int)
RETURNS varchar(255) CHARSET utf8
BEGIN
declare result varchar(255) default '';
set result = reverse(substring_index(reverse(substring_index(x,y,z)),y,1));
return result;
END;
CREATE FUNCTION func_compare(x VARCHAR(2000),y VARCHAR(2000),z VARCHAR(5))
RETURNS int
BEGIN
DECLARE count_1 INT DEFAULT 0;
DECLARE count_2 INT DEFAULT 0;
DECLARE num_1 INT DEFAULT 1;
DECLARE num_2 INT DEFAULT 1;
DECLARE _val INT DEFAULT 0;
set count_1=func_get_split_string_total(x,z);
set count_2=func_get_split_string_total(y,z);
loop1:WHILE (num_1-1)<count_1 Do
loop2:WHILE (num_2-1)<count_2 Do
if func_get_split_string(x,z,num_1)=func_get_split_string(y,z,num_2)
THEN set _val=1;
RETURN _val;
END if;
set num_2=num_2+1;
END WHILE loop2;
set num_2=0;
set num_1=num_1+1;
END WHILE loop1;
RETURN _val;
END;
- 测试及其结果
SELECT func_compare('aaa,bbb,ccc','vvv,uuu,ccc,ttt',',')


浙公网安备 33010602011771号