Sql server 如何获取数据类型为varchar且第一个字符为“£”的行的总和?

Sql server 如何获取数据类型为varchar且第一个字符为“£”的行的总和?,sql-server,Sql Server,我想要数据类型为varchar的行的总和&第一个字符是£like: Total £23.0 £13.0 £2.40 我正在使用此查询: select sum(cast(SUBSTRING(total,2,(LEN(total)))as int)) as Total from tbl_preorder 你应该考虑你真的想这么做。如果有可能,您应该将该列的数据类型更改为decimal,或者引入一个计算列,该列可以是带有字符串的此值,也可以是decimal并在varchar列上执行子字符串。由于十

我想要数据类型为varchar的行的总和&第一个字符是£like:

Total
£23.0
£13.0
£2.40
我正在使用此查询:

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

你应该考虑你真的想这么做。如果有可能,您应该将该列的数据类型更改为decimal,或者引入一个计算列,该列可以是带有字符串的此值,也可以是decimal并在varchar列上执行子字符串。

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

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

并在

上验证,希望您能提供帮助,谢谢

选择SUMCONVERTDECIMAL18,2,STUFFtotal,1,1,作为tbl_preorder中的Total,使用下面的查询,除了数据类型int到decimal之外,顺序与上面提到的相同


您还可以使用稍微简洁一点的

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

谢谢博蒂斯!但我想要同样的答案。@Steve这真的是你想要接受的答案吗。就我个人而言,我会选择马丁的答案。这只是我答案的一个较长版本
SELECT sum(cast(SUBSTRING(total, 2, ( LEN(total) ))AS DECIMAL(10, 2))) AS Total
FROM   tbl_preorder 
SELECT SUM(CAST(total AS MONEY))
FROM tbl_preorder