SQL列AVG()被视为字符串而非按DESC排序

时间:2018-03-03 13:03:15

标签: mysql sql asp-classic

挣扎以下sql语句。

数据库是MySQL,得分为DECIMAL(5,1)

我希望按照列中的平均分数排序

...AVG(COALESCE(score,0)) AS scoreAvg ... ORDER BY scoreAvg DESC

但结果并不像预期的那样,我的产品得分高于没有得分的产品(得分为0)。

看起来像得分被视为一个字符串,我试过。

CAST(SCORE AS DECIMAL(5,1))

但没有运气。

感谢您的帮助,

此致

2 个答案:

答案 0 :(得分:0)

您的值可能在varchar(max)中 因此,您希望将varchar转换为十进制或数字并添加

Order  by avg(COALESCE(column name,0)) 

Order by avg(coalesce(cast(column name as decimal (5,1)),0.0)

答案 1 :(得分:-1)

剥离我的sql字符串后,结果我的" image_path" TEXT格式的列导致了该问题。将其更改为varchar(255)。

我没有发布它,因为我认为它不相关。

无论如何现在修好了。 必须是MySQL中的错误