sql模大数

时间:2018-07-12 12:02:55

标签: sql numbers modulo

我有一个大数字,代表一个预先准备好的IBAN数字。为了进行验证,模数%97必须为1。但是……我得到了这个“ varchar值'272429142829272429'的转换溢出了int列”。代码是这样的:

select U.Denumire 
from terti U
where (len(U.cont_in_banca) < 10) and
 (Convert(int, Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace (Replace 
(Replace (Replace (Replace (Replace( Replace (Replace(Replace (Replace( RIGHT(U.cont_in_banca,36) + LEFT(U.cont_in_banca,4), ' ',''),'A','10'),'B', '11'),'C', '12'), 'D', '13'),
'E', '14'),'F', '15'),'G', '16'), 'H', '17'),'I', '18'), 'J', '19'), 'K', '20'),'L','21'),'M','22'),'N','23'),'O','24'),'P', '25'),'Q','26'), 'R', '27'),'S','28'),'T','29'),'U','30'),
'V','31'),'W','32'),'X','33'),'Y', '34'),'Z','35')) %97 = 1)

我也尝试过强制转换为numeric(38, 0)而不是转换为int,但是出现以下错误:

  

将数据类型varchar转换为数字时出错。

1 个答案:

答案 0 :(得分:2)

使用convert(int, . . . )代替convert(decimal(38, 0), . . . )。那应该足够存储值。