日期:2014-05-16  浏览次数:20792 次

mysql中怎样截取字符串中数值
有一个表a,现在我想将a表中的ades列中字符串只截取数值部分,然后再插入到b表,看表结构:
SQL code

--创建a表
CREATE TABLE `a` (
  `aid` int(11) DEFAULT NULL,
  `ades` varchar(50) DEFAULT NULL
);
--创建b表
CREATE TABLE `b` (
  `bid` int(11) DEFAULT NULL,
  `bdes` decimal(20,8) DEFAULT NULL
);
--插入数据
INSERT INTO a VALUES(1,'0.5元/手');
INSERT INTO a VALUES(2,'52.666元/手');
INSERT INTO a VALUES(1,'100.2元/手');
INSERT INTO a VALUES(1,'5元/手');
INSERT INTO a VALUES(1,'3元/手');
INSERT INTO a VALUES(1,'88.9元/手');
mysql> select * from a;
+------+-------------+
| aid  | ades        |
+------+-------------+
|    1 | 0.5元/手    |
|    2 | 52.666元/手 |
|    1 | 100.2元/手  |
|    1 | 5元/手      |
|    1 | 3元/手      |
|    1 | 88.9元/手   |
+------+-------------+


例如:0.5元/收只保留0.5,52.666元/手只保留52.666。
想显示成下面的形式:

+------+-------------+
| aid | ades |
+------+-------------+
| 1 | 0.5 |
| 2 | 52.666 |
| 1 | 100.2 |
| 1 | 5 |
| 1 | 3 |
| 1 | 88.9 |
+------+-------------+
然后再复制到b表中,这个语句应该怎么写呢?


------解决方案--------------------
试试substring_index(ades,'元',1)
------解决方案--------------------
SQL code
insert into b
select aid,SUBSTRING_INDEX(ades,'元',1) from a;

------解决方案--------------------
select aid,ades+0 from a;
------解决方案--------------------
楼上正解~