mysql自定义函数实现字符串匹配
先来一个截图:
fSearch函数的第一个参数为单一字符串(即 没有特殊字符串隔开)
fSearch函数的第一个参数非单一字符串
多个字符串同样可以匹配。
函数代码:
01 DELIMITER $$ 02 Create function fSearch(targetStr VARCHAR(100),findStr VARCHAR(100)) RETURNS INT 03 BEGIN 04 DECLARE strNum INT; 05 DECLARE cIndex INT DEFAULT 1; 06 DECLARE cStr VARCHAR(50); 07 DECLARE flag INT; 08 set strNum=1+(length(targetStr) - length(replace(targetStr,',',''))); 09 WHILE cIndex<=strNum 10 DO 11 set cStr=reverse(substring_index(reverse(substring_index(targetStr,',',cIndex)),',',1)); 12 set flag=LOCATE(cStr,findStr); 13 if (flag>0&&cStr!='') THEN 14 RETURN flag; 15 END IF; 16 set cIndex=cIndex+1; 17 END WHILE; 18 RETURN 0; 19 END $$ 20 DELIMITER ;
使用场景:
加入博客系统中有个字段 存储文章所属的标签,假设标签为‘java,php,
asp,web开发’ ,此时如果想通过该标签找到具有同类标签的文章 则可:
select *from blog b where fSearch('java,php,asp,web开发',b.tags)>0