目前字段中存储的字符串是““:0:1:2:23:245”
如果要全部替换成”:0:0001:0002:0023:0245“
有没有这样成批替换的方法?就是把用:分割的字符串全部转换成固定位数,不足的前面补0

解决方案 »

  1.   

    REPLACE(str,from_str,to_str)     
      将字符串   str   中的   from_str   替换成为   to_str   
      mysql>   SELECT   REPLACE('www.mysql.com',   'w',   'Ww');   
                      ->   'WwWwWw.mysql.com'   
        
        
      它是多字节安全的.   
        
      mysql>   SELECT   REPLACE('中华人民共和国--中国--中中国中',   '中国',   '中国人');   
                      ->   中华人民共和国--中国人--中中国人中  或者:
    UPDATE   `a`   SET   field1   =   '222'   where   field1   ='abcedf'  这要你用正侧表达式来设计!!楼主自己选择吧!
      

  2.   

    自己写个函数来处理吧:create function f_test_new(i_str varchar(500))
    returns varchar(1000)
    begin
    declare v_result varchar(1000);
    declare v_temp_str varchar(50);
    set v_result='';
    set v_result=concat(v_result,left(i_str,3));
    set i_str = right(i_str,char_length(i_str)-3);
    set i_str = concat(i_str,':');
    while instr(i_str,':')>0 do
    set v_temp_str = left(i_str,instr(i_str,':')-1);
    set v_temp_str = lpad(v_temp_str,4,'0');
    set v_result = concat(v_result,v_temp_str,':');
    set i_str = right(i_str,char_length(i_str)-instr(i_str,':'));
    end while;
    set v_result=left(v_result,char_length(v_result)-1);
    return v_result;
    end;调用:select f_test_new(字段) from tb_name;
      

  3.   

    测试:mysql> create table tb_test_in (str varchar(50));
    ERROR 1050 (42S01): Table 'tb_test_in' already exists
    mysql> create table tb_test_in (str varchar(50));
    Query OK, 0 rows affected (0.08 sec)mysql> insert into tb_test_in values (':0:1:2:23:245');
    Query OK, 1 row affected (0.06 sec)mysql> select * from tb_test_in;
    +---------------+
    | str           |
    +---------------+
    | :0:1:2:23:245 |
    +---------------+
    1 row in set (0.00 sec)mysql> select str,f_test_new(str) from tb_test_in;
    +---------------+------------------------+
    | str           | f_test_new(str)        |
    +---------------+------------------------+
    | :0:1:2:23:245 | :0:0001:0002:0023:0245 |
    +---------------+------------------------+
    1 row in set (0.00 sec)mysql>