获取数据类型为varchar&的行的总和第一个字符是£

时间:2013-08-28 09:09:58

标签: sql-server

嗨大家好我想要数据类型为varchar&的行的总和第一个角色是£喜欢:

Total
£23.0
£13.0
£2.40

我正在使用以下查询:

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

任何建议都非常感谢。

6 个答案:

答案 0 :(得分:3)

由于十进制数字和字段长度,您的查询无效。试试这个:

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

并在SQL Fiddle

上验证

答案 1 :(得分:3)

您也可以使用稍微简洁一点。

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

SQL Fiddle

答案 2 :(得分:2)

SELECT sum(cast(stuff(total, 1,1,'') as decimal(10,2))) as Total 
FROM tbl_preorder

答案 3 :(得分:1)

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

答案 4 :(得分:1)

希望这有帮助谢谢

SELECT SUM(CONVERT(DECIMAL(18,2),STUFF(total,1,1,'')))来自tbl_preorder的总计

答案 5 :(得分:0)

嗨使用以下查询,与上面提到的序列相同,但数据类型为int到十进制。

SELECT sum(cast(SUBSTRING(total, 2, ( LEN(total) ))AS DECIMAL(10, 2))) AS Total
FROM   tbl_preorder