需求:有一串数字构成的字符串,并且各数字间由;隔开,如:'aaa;bbb;ccc;ddd;eee',现要把字符串以;为分隔符分割成5个单独的字符串并插入到数据表对应字段中。
解决办法如下:
mysql> set @a="aaa;bbb;ccc;ddd;eee";
Query OK, 0 rows affected
mysql> set @b=concat("insert into test values('",replace(@a,";","'),('"),"')");
Query OK, 0 rows affected
mysql> select @b;
+--------------------------------------------------------+
| @b |
+--------------------------------------------------------+
| insert into test values('aaa'),('bbb'),('ccc'),('ddd'),('eee') |
+--------------------------------------------------------+
1 row in set
mysql>
然后再prepare,execute...(可用存储过程)。
ps:解释下这句话
mysql> set @b=concat("insert into test values('",replace(@a,";","'),('"),"')");
concat里面实际是由三个字符串连接起来的:
“insert into test values‘”,replace(@a,“;”,“’),(‘”和“’)”。
其中replace(@a,“;”,“’)会提前执行替换操作,结果是:aaa’),(‘bbb’),(‘ccc’),(‘ddd’),(‘eee
没测过字符串足够长时执行速度怎样,希望对大家有用~
0
顶
0
踩
分享到:
2009-10-22 23:36
浏览 4379
分类:数据库
评论
2 楼
hope598
2009-10-25
wenxiang_tune 写道
| insert into test values('aaa'),('bbb'),('ccc'),('ddd','eee') | 注意看有错啊!!('ddd','eee') 并没有拆分开!写错了??
谢谢提醒啊,已经解决了
1 楼
wenxiang_tune
2009-10-25
| insert into test values('aaa'),('bbb'),('ccc'),('ddd','eee') | 注意看有错啊!!('ddd','eee') 并没有拆分开!写错了??