23

当我尝试将 varchar 字段转换为双精度(数字)时,我的查询出现问题。我有这个 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 转换为数字,以便对其进行完美排序。任何的想法?

4

2 回答 2

42

使用DECIMAL()orNUMERIC()因为它们是固定的精度和比例数字。

SELECT fullName, 
       CAST(totalBal as DECIMAL(9,2)) _totalBal
FROM client_info 
ORDER BY _totalBal DESC
于 2013-01-24T07:36:47.920 回答
2

这可能更可取,即使用 float 代替

SELECT fullName, CAST(totalBal as float) totalBal FROM client_info ORDER BY totalBal DESC
于 2016-11-18T10:12:44.640 回答