当我尝试将varchar字段转换为double(数字)时,我的查询出现问题。我有这个sql语句:
SELECT fullName, CAST(totalBal as numeric(9,2) FROM client_info ORDER BY totalBal DESC
实际上我想按降序显示totalBal
的值。但由于该字段位于varchar中,因此结果集有时是错误的。当我尝试使用以下语句进行查询时,这是结果集:
SELECT fullName, totalBal FROM client_info ORDER BY totalBal DESC
结果集是:
totalBal
的排序不正确。所以我决定将varchar转换为数字,以便它可以完美地排序。有什么想法吗?
答案 0 :(得分:25)
使用DECIMAL()
或NUMERIC()
,因为它们是固定的精度和比例数字。
SELECT fullName,
CAST(totalBal as DECIMAL(9,2)) _totalBal
FROM client_info
ORDER BY _totalBal DESC
答案 1 :(得分:0)
这可能更合适,即使用float而不是
SELECT fullName, CAST(totalBal as float) totalBal FROM client_info ORDER BY totalBal DESC