SQL查询 - >将分数(字符串)转换为十进制

时间:2015-01-13 16:53:03

标签: php mysql

在我的数据库中,我将odds存储为分数(varchar)但我需要将它们转换为小数,因此我可以稍后使用以下语句

select Date, Horse, Racetime, min(odds) from horsesrp where odds < 2.5 and odds != 0 and Date >= "2014-12-01" AND Date <= "2014-12-30"  group by racetime

是否可以从一个分数转换odds,例如2/1为小数,例如2.0或者我必须为转换编写脚本?

2 个答案:

答案 0 :(得分:2)

您可以使用SUBSTRING_INDEX拆分分数,然后简单地划分为:

SELECT CONVERT(SUBSTRING_INDEX (odds,'/',1),DECIMAL(10,2))/CONVERT(SUBSTRING_INDEX(odds,'/',-1),DECIMAL(10,2)) FROM horserp;

答案 1 :(得分:0)

  

DECIMAL [(M [,d)]

     

将值转换为DECIMAL数据类型。可选参数M和D.   指定精度(M指定总位数)和   scale(D指定小数点后的位数)   十进制值。默认精度是后两位数   小数点。

尝试一下像:

select Date, Horse, Racetime, min(CAST(REPLACE(odds, '/', '.') AS DECIMAL(10,6))) from horsesrp where CAST(REPLACE(odds, '/', '.') AS DECIMAL(10,6)) < 2.5 and odds != '0' and Date >= "2014-12-01" AND Date <= "2014-12-30"  group by racetime

但请注意,这比使用脚本

将所有内容转换为小数要慢