我有一个大数字,代表一个预先准备好的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转换为数字时出错。
答案 0 :(得分:2)
使用convert(int, . . . )
代替convert(decimal(38, 0), . . . )
。那应该足够存储值。