Sql server 如何获取数据类型为varchar且第一个字符为“£”的行的总和?
我想要数据类型为varchar的行的总和&第一个字符是£like: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列上执行子字符串。由于十
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