mysql> SELECT REPLACE('中华人民共和国--中国--中中国中', '中国', '中国人'); -> 中华人民共和国--中国人--中中国人中 或者: UPDATE `a` SET field1 = '222' where field1 ='abcedf' 这要你用正侧表达式来设计!!楼主自己选择吧!
自己写个函数来处理吧: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;
将字符串 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' 这要你用正侧表达式来设计!!楼主自己选择吧!
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;
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>