1

我有一个如下表 ID 是一个数字列,总计是 Varchar(20) - 表名是订单:

ID       Total

1        $10

2        $1,000

3        $1500.50

4        300

5        20.50

6        -80

通过一个

SELECT statement I would like to get the Id of the highest total i.e 3. 

SELECT ID, MAX(CONVERT(Total, SIGNED INTEGER)) AS total FROM orders 

给了我最高但不正确的 ID。

我想忽略美元符号($)和逗号(,)

4

3 回答 3

3

只需使用 MAX(CONVERT(replace(replace(total,',',''),'$',''), SIGNED INTEGER)) AS total

于 2012-12-20T05:20:35.373 回答
2

您的查询应该是这样的。好用,我也用过。

尝试这个:

SELECT MAX(CONVERT({column_name}, SIGNED INTEGER)) AS {column_name or xyz_name} from {table_name} 
于 2015-03-13T09:16:41.403 回答
1

在 VARCHAR 字段中存储金额听起来像是自找麻烦。

您可以尝试在转换为数字之前删除前导$使用REPLACE,但这仍然是错误的做法。

请重新设计您的模式并将金额存储在适当类型的列中,这样就不会出现这些问题。

于 2012-12-20T05:24:20.707 回答