set t_MCODE=ltrim(t_code); /* t_code 为号码字符串 */ set t_MCODE=rtrim(t_MCODE); set t_i=POSITION(';' in t_MCODE); WHILE t_i >=1 do set str=left(t_MCODE,t_i-1); set str=ltrim(str) ; set str=rtrim(str); insert test(names) values(str); set t_MCODE=substring(t_MCODE,t_i+1,length(t_MCODE)-t_i); set t_i=POSITION(';' in t_MCODE); end WHILE ;/*把号码插入表*/ insert test(names) values(t_MCODE); /*将最后剩余的号码放入临时表*/
mysql> set @b = '123;234;567;789';Query OK, 0 rows affected (0.00 sec)mysql> set @a = concat(concat("insert into x values('",replace(@b,';',"'),('")),"')");Query OK, 0 rows affected (0.00 sec)mysql> select @a;+----------------------------------------------------+| @a |+----------------------------------------------------+| insert into x values('123'),('234'),('567'),('789') |+----------------------------------------------------+1 row in set (0.00 sec) [解决办法]
[解决办法] set @a = concat(concat("insert into xvalues('",replace(@b,';',"'),('")),"')"); ----------这都什么意思啊,格式方面都看不太懂。。。。。 "insert into xvalues('",replace(@b,';',"'),('")),"' [解决办法] 可以使用xml处理。 microsoft sql server 中支持 xml很好。 不知道mysql怎样。 先处理成可执行的xml,然后一条语句就可以处理。
mysql> set @a = concat(concat("insert into x values('",replace(@b,';',"'),('"))," ')"); Query OK, 0 rows affected (0.00 sec)
mysql> select @a;
+----------------------------------------------------+ | @a | +----------------------------------------------------+ | insert into x values('123'),('234'),('567'),('789') | +----------------------------------------------------+ 1 row in set (0.00 sec)