【问题标题】:Converting VARCHAR to DECIMAL values in MySql在 MySql 中将 VARCHAR 转换为 DECIMAL 值
【发布时间】:2014-04-12 06:59:06
【问题描述】:
我已将一个包含字符串值(例如吃)和浮动值(例如 0.87)的 CSV 文件导入到我的 phpMyAdmin 数据库中的表中。在我得到所有字符串值并只保留具有十进制值的行之后,我需要将这些值从 VARCHAR 转换为 DECIMAL/FLOAT 以便我可以对此属性执行 MAX()。
我该怎么做?每次我尝试通过 phpMyAdmin 中的 GUI 执行此操作时,我的所有值都会自动四舍五入为 0 和 1。
请帮帮我!
【问题讨论】:
标签:
mysql
sql
phpmyadmin
typeconverter
【解决方案1】:
无需转换,您可以使用此查询找到最大值
select max(cast(stuff as decimal(5,2))) as mySum from test;
您的演示表:
create table test (
name varchar(15),
stuff varchar(10)
);
insert into test (name, stuff) values ('one','32.43');
insert into test (name, stuff) values ('two','43.33');
insert into test (name, stuff) values ('three','23.22');
您的问题:
对于 SQL Server,您可以使用:
select max(cast(stuff as decimal(5,2))) as mySum from test;
【解决方案3】:
请注意,如果您从VARCHAR 转换为DECIMAL 并且未指定精度和最大位数(即DECIMAL 而不是DECIMAL(5,2)),MySQL 会自动将您的小数四舍五入为整数值。
【解决方案4】:
希望对大家有所帮助
select convert( if( listPrice REGEXP '^[0-9]+$', listPrice, '0' ), DECIMAL(15, 3) ) from MyProduct WHERE 1