如何在sql中乘以一个大数字而没有得到"溢出错误"错误

时间:2016-01-16 10:05:55

标签: sql-server sql-server-2005

我知道这可能是一个愚蠢的问题;但是如何在SQL Server中乘以大数而不会出现此错误:

  

将表达式转换为数据类型int的算术溢出错误

我需要一个包含6位客户编号列表的列。

E.g。 123456,123457并使其成为1234560000000,1234570000000&等

这是我尝试过的。

update account set sClientIdNo =  sClientIdNo * 100000000

但我最终得到了溢出错误。 任何帮助将不胜感激。

编辑:我忘了提到包含客户编号的列有 varchar 数据类型。

2 个答案:

答案 0 :(得分:0)

我建议您使用numeric这样的类型:

DECLARE @a numeric(14, 0) = 123456
SELECT  @a * 100000000

请注意,我根据您的要求使用14,您可以使用更大的值来获得精确度。

答案 1 :(得分:0)

这对我有用。

UPDATE account SET sClientIdNo = CONVERT(bigint, sClientIdNo  ) * 100000000

@shA.t通过声明@a数字提供了我需要的线索。

谢谢