mysql 自定义函数 实现字符串匹配

原创
2013/09/05 17:05
阅读数 158

先来一个截图:

fSearch函数的第一个参数为单一字符串(即 没有特殊字符串隔开)

fSearch函数的第一个参数非单一字符串


多个字符串同样可以匹配。


函数代码:

DELIMITER $$
Create   function fSearch(targetStr VARCHAR(100),findStr VARCHAR(100)) RETURNS INT
BEGIN
DECLARE strNum INT;
DECLARE cIndex INT DEFAULT 1;
DECLARE cStr VARCHAR(50);
DECLARE flag INT;
set strNum=1+(length(targetStr) - length(replace(targetStr,',','')));
WHILE cIndex<=strNum
DO
set cStr=reverse(substring_index(reverse(substring_index(targetStr,',',cIndex)),',',1));
set flag=LOCATE(cStr,findStr);
if (flag>0&&cStr!='') THEN
RETURN flag;
END IF;
set cIndex=cIndex+1;
END WHILE;
RETURN 0;
END $$
DELIMITER ;

使用场景:

加入博客系统中有个字段 存储文章所属的标签,假设标签为‘java,php,asp,web开发’ ,此时如果想通过该标签找到具有同类标签的文章 则可:

select *from blog b where fSearch('java,php,asp,web开发',b.tags)>0


展开阅读全文
打赏
0
6 收藏
分享
加载中

引用来自“AIting”的评论

引用来自“matrixy”的评论

xxx fucx oschina ?

what?

哈哈,你的截图的第二个啊,,,这是你故意的吧?
2013/09/06 16:52
回复
举报
AIting博主

引用来自“matrixy”的评论

xxx fucx oschina ?

what?
2013/09/06 14:12
回复
举报
xxx fucx oschina ?
2013/09/05 22:34
回复
举报
更多评论
打赏
3 评论
6 收藏
0
分享
返回顶部
顶部