我对MS SQL Server有点新意,我正在尝试执行一个非常简单的查询,如下所示:
SELECT name, id, description, distance
FROM my_table
WHERE id IS NOT NULL
ORDER BY distance DESC
我的距离值范围为1到18752。
出于某种原因,上面的查询给出了最高距离值为9999,而大于9999的值在下面的某处找到。
我也尝试过
MAX(distance)
仍然给了我9999.
使用此功能有一些关键方面我错过了吗?
答案 0 :(得分:7)
你的距离不是int,我猜:
SELECT name, id, description,distance
FROM my_table
WHERE id IS NOT NULL
ORDER BY CAST(distance AS INT) DESC
CAST
为INT
,它将按整数值排序。
答案 1 :(得分:5)
您的问题是distance
的数据类型。如果它为VARCHAR
或NVARCHAR
,则按字母顺序对其进行排序。
如果您希望以数字方式排序,您可能希望使用INT
或类似的东西。