社区应用 最新帖子 精华区 社区服务 会员列表 统计排行 道具中心 银行
主题 : 写的一个分隔字符串的存储过程 跟大家分享 不对的地方请大家指正
ican92008 离线
级别: 新手上路
显示用户信息 
0  发表于: 2009-06-01  
0

写的一个分隔字符串的存储过程 跟大家分享 不对的地方请大家指正

DELIMITER $$ ;H;c Sn5uL  
+M^+qt;]V  
DROP PROCEDURE IF EXISTS `sp_split_trig`$$ 8M&q  
CREATE -0 o1iU7  
U&}v1wdZ3  
    PROCEDURE `sp_split_trig`(IN sp_char VARCHAR(5000)) 1x8zub B  
     -mur` tC  
    BEGIN /3`(Ki{ Q  
     BhcTPQsW  
    DECLARE sp_char_length INT DEFAULT 0;  /*定义分隔后字符串数量*/ b|KlWt'  
    DECLARE sp_index INT DEFAULT 0;          /*定义指针*/ 8,DY0PGP  
    DECLARE sp_delimiter_one VARCHAR(5) DEFAULT ":";  /*定义分隔符*/ }Jr!a M'  
    DECLARE sp_delimiter_two VARCHAR(5) DEFAULT "|"; (+w>hCI  
    DECLARE sp_char_tmp VARCHAR(5000); /*定义字符串临时变量*/  a\@k5?  
     6hX[5?}  
    SET sp_char_length = 1+(LENGTH(sp_char) - LENGTH(REPLACE(sp_char,sp_delimiter_one,''))); /*获取分隔后字符串数量*/ :*6#(MX  
     .WV5Gf)  
    /*创建分隔结果表*/ N" =$S|Gs  
    DROP TABLE IF EXISTS tmp_char; 5H!6 #pqM  
    CREATE TEMPORARY TABLE tmp_char (act VARCHAR(1000) NOT NULL, gut VARCHAR(5000) NOT NULL); alV{| Vf[6  
     dtDT^~  
    WHILE sp_index < sp_char_length M?QK4Zxb6U  
    DO |K,[[D<R  
        SET sp_index = sp_index + 1; IB%Hv]  
        /*获取分隔后字符串,保存到临时表*/ pHKGK7 S-  
        SET sp_char_tmp = REVERSE(SUBSTRING_INDEX(REVERSE(SUBSTRING_INDEX(sp_char,sp_delimiter_one,sp_index)),sp_delimiter_one,1)); *<"#1H/q  
        INSERT INTO tmp_char (act, gut) VALUES (SUBSTRING_INDEX(sp_char_tmp,sp_delimiter_two,1), SUBSTRING_INDEX(sp_char_tmp,sp_delimiter_two,-1)); T_NN.Ol   
    END WHILE; p1`") $  
     i~sW_f+  
    SELECT * FROM tmp_char;  /*测试分隔结果*/ :)g}x&A^$  
! a!^'2  
    END$$ Q@aDa8Z  
;cD&qheDV  
DELIMITER ; `\Ye:$q  
z5q(  
对一个字符串进行了二次分隔 ,第二次分隔认为只能分隔一次。 第一次分隔符为“:”, 第二次分隔符为“|”。
sky000 离线
www.jianzhaoyang.com
级别: 总版主
显示用户信息 
1  发表于: 2009-06-04  
顶一下,不错的 qku}cWD9/_  
8;GuJP\  
多谢分享 :)
邮件组:mysqler@googlegroups.com
个人网站:http://www.jianzhaoyang.com
peter-yue 离线
级别: 新手上路
显示用户信息 
2  发表于: 2009-07-09  
功能函数用PROC应该在思想上就是不对的吧? SEXmVFsQ  
既然是函数就应该用FUNCTION处理吧
快速回复 顶端
内容
HTML 代码不可用
 使用签名
 Wind Code自动转换
 匿名帖
 隐藏此帖
 隐藏附件
 出售
 加密
限 100 字节
认证码:
验证问题:100-1=? 正确答案:99
限 50000 字节
按 Ctrl+Enter 直接提交