sql - sql取模大数
问题描述
我有一个很大的数字,它代表一个预先确定的 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 转换为数字时出错。
解决方案
而不是convert(int, . . . )
使用convert(decimal(38, 0), . . . )
. 那应该足够大以存储价值。
推荐阅读
- go - 多对多条件查询
- python - 获取值与多个条件python匹配的列名
- python - numpy.format_float_scientific 不修剪尾随小数点
- c# - 如何正确地将自定义字符串传递给 services.AddDbContext
(x => x.UseSqlServer()) 我在运行时构建的? - swift - Swiftui listRowInsets 添加到空数组时会发生意外更改
- neo4j - Neo4j 建模关系查询
- apache - 重写然后使用 .htaccess 重定向到同一页面
- c# - JSON.NET 未将 ISO 8601 时间转换为 Noda Time Instant
- python - Python中张量的总变分正则化
- angularjs - 在 AngularJS 的 ng-options 中访问整个项目