MySQL如何实现oracle函数INSTR的功能-创新互联
下文我给大家简单讲讲关于MySQL如何实现oracle函数INSTR的功能,大家之前了解过相关类似主题内容吗?感兴趣的话就一起来看看这篇文章吧,相信看完MySQL如何实现oracle函数INSTR的功能对大家多少有点帮助吧。
成都创新互联服务项目包括宝塔网站建设、宝塔网站制作、宝塔网页制作以及宝塔网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,宝塔网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到宝塔省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!Oracle 里用了几次如下的调用,
SQL> select instr('This is belong to you, but not to me.','to',1,1) as pos from dual; POS -------------------- 16 已用时间: 00: 00: 00.00 SQL> select instr('This is belong to you, but not to me.','to',1,2) as pos from dual; POS -------------------- 32 已用时间: 00: 00: 00.00 SQL> select instr('This is belong to you, but not to me.','belong',-1,1) as pos from dual; POS -------------------- 9 已用时间: 00: 00: 00.00 SQL> select instr('This is belong to you, but not to me.','belong',-1,2) as pos from dual; POS -------------------- 0 已用时间: 00: 00: 00.00
MySQL里效果如下,
mysql> select func_instr_oracle('This is belong to you, but not to me.','to',1,1) as pos; +------+ | pos | +------+ | 16 | +------+ 1 row in set (0.00 sec) mysql> select func_instr_oracle('This is belong to you, but not to me.','to',1,2) as pos; +------+ | pos | +------+ | 32 | +------+ 1 row in set (0.00 sec) mysql> select func_instr_oracle('This is belong to you, but not to me.','belong',-1,1) as pos; +------+ | pos | +------+ | 9 | +------+ 1 row in set (0.00 sec) mysql> select func_instr_oracle('This is belong to you, but not to me.','belong',-1,2) as pos; +------+ | pos | +------+ | 0 | +------+ 1 row in set (0.00 sec)
附上函数func_instr_oracle的代码:
DELIMITER $$ USE `oracle12c`$$ DROP FUNCTION IF EXISTS `func_instr_oracle`$$ CREATE DEFINER=`root`@`localhost` FUNCTION `func_instr_oracle`( f_str VARCHAR(1000), -- Parameter 1 f_substr VARCHAR(100), -- Parameter 2 f_str_pos INT, -- Postion f_count INT UNSIGNED -- Times ) RETURNS INT(10) UNSIGNED BEGIN -- Created by ytt. Simulating Oracle instr function. -- Date 2015/12/5. DECLARE i INT DEFAULT 0; -- Postion iterator DECLARE j INT DEFAULT 0; -- Times compare. DECLARE v_substr_len INT UNSIGNED DEFAULT 0; -- Length for Parameter 1. DECLARE v_str_len INT UNSIGNED DEFAULT 0; -- Length for Parameter 2. SET v_str_len = LENGTH(f_str); SET v_substr_len = LENGTH(f_substr); -- Unsigned. IF f_str_pos > 0 THEN SET i = f_str_pos; SET j = 0; WHILE i <= v_str_len DO IF INSTR(LEFT(SUBSTR(f_str,i),v_substr_len),f_substr) > 0 THEN SET j = j + 1; IF j = f_count THEN RETURN i; END IF; END IF; SET i = i + 1; END WHILE; -- Signed. ELSEIF f_str_pos <0 THEN SET i = v_str_len + f_str_pos+1; SET j = 0; WHILE i <= v_str_len AND i > 0 DO IF INSTR(RIGHT(SUBSTR(f_str,1,i),v_substr_len),f_substr) > 0 THEN SET j = j + 1; IF j = f_count THEN RETURN i - v_substr_len + 1; END IF; END IF; SET i = i - 1; END WHILE; -- Equal to 0. ELSE RETURN 0; END IF; RETURN 0; END$$ DELIMITER ;
大家觉得MySQL如何实现oracle函数INSTR的功能这篇文章怎么样,是否有所收获。如果想要了解更多相关,可以继续关注我们的行业资讯板块。
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
分享名称:MySQL如何实现oracle函数INSTR的功能-创新互联
网站路径:http://cdiso.cn/article/dcsecs.html