在我的数据库中,我将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
或者我必须为转换编写脚本?
答案 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
但请注意,这比使用脚本
将所有内容转换为小数要慢