SQL Server中如何编写语句计算列A各位数字之和生成列B
在SQL Server中计算数字列各位数字之和的实现方案
需求是生成列B,用于存储列A中各位数字的和。例如当列A的值为12345时,列B的值为1+2+3+4+5=15。
最初的思路是多次使用LEFT函数拆分数字到不同列后求和,考虑到目标列的数字位数不超过10位,最终可以使用以下SQL语句实现:
SELECT '1234567' , convert(integer,left('1234567',1)) + convert(integer,right(left('1234567',2),1)) + convert(integer,right(left('1234567',iif(len('1234567') >= 3, 3, 0)),1)) + convert(integer,right(left('1234567',iif(len('1234567') >= 4, 4, 0)),1)) + convert(integer,right(left('1234567',iif(len('1234567') >= 5, 5, 0)),1)) + convert(integer,right(left('1234567',iif(len('1234567') >= 6, 6, 0)),1)) + convert(integer,right(left('1234567',iif(len('1234567') >= 7, 7, 0)),1)) + convert(integer,right(left('1234567',iif(len('1234567') >= 8, 8, 0)),1)) + convert(integer,right(left('1234567',iif(len('1234567') >= 9, 9, 0)),1)) + convert(integer,right(left('1234567',iif(len('1234567') >= 10, 10, 0)),1))
内容的提问来源于stack exchange,提问作者Daniel Moniak
相关产品推荐
相关产品推荐

