3

我想要数据类型为 varchar 且第一个字符为 £ 的行的总和,例如:

Total
£23.0
£13.0
£2.40

我正在使用这个查询:

select sum(cast(SUBSTRING(total,2,(LEN(total)))as int)) as Total from tbl_preorder
4

6 回答 6

3

由于十进制数字和字段长度,您的查询不起作用。尝试这个:

SELECT Sum(Cast(Replace(total, '£', '') AS DECIMAL(10, 2))) 
FROM   test 
WHERE total LIKE '£%'

并在SQL Fiddle上进行验证

于 2013-08-28T09:24:44.293 回答
3

你也可以使用稍微简洁一些的。

SELECT SUM(CAST(total AS MONEY))
FROM tbl_preorder

SQL小提琴

于 2013-08-28T09:54:36.123 回答
2
SELECT sum(cast(stuff(total, 1,1,'') as decimal(10,2))) as Total 
FROM tbl_preorder
于 2013-08-28T09:26:22.427 回答
1

你应该考虑到你真的想要这样做。如果有可能,您应该将该列的数据类型更改为十进制,或者可能引入一个计算列(它可以是这个带有字符串的值,或者是一个小数并在 varchar 列上执行子字符串)。

于 2013-08-28T09:13:41.933 回答
1

嗨希望这有助于谢谢

从 tbl_preorder 中选择 SUM(CONVERT(DECIMAL(18,2), STUFF(total,1,1,''))) 作为总计

于 2013-08-28T09:34:12.513 回答
0

嗨使用下面的查询,除了数据类型 int 到十进制之外,顺序与上面提到的相同。

SELECT sum(cast(SUBSTRING(total, 2, ( LEN(total) ))AS DECIMAL(10, 2))) AS Total
FROM   tbl_preorder 
于 2013-08-28T09:40:47.997 回答