我有一个表如下ID是一个数字列,Total是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。
我想忽略美元符号($)
和逗号(,)
。
答案 0 :(得分:3)
只是使用
MAX(CONVERT(replace(replace(total,',',''),'$',''), SIGNED INTEGER)) AS total
答案 1 :(得分:2)
您的查询应该是这样的。它有效,我也用过它。
试试这个:
SELECT MAX(CONVERT({column_name}, SIGNED INTEGER)) AS {column_name or xyz_name} from {table_name}
答案 2 :(得分:1)
在VARCHAR字段中存储金额听起来像是在寻找麻烦。
您可以尝试在转换为数字之前使用$
删除前导REPLACE
,但这仍然是错误的。
请重新设计您的架构并将金额存储在适当类型的列中,否则不会出现这些问题。