SQL – 安全地将BIGINT向下转换为INT
发布时间:2021-03-07 13:17:29 所属栏目:编程 来源:网络整理
导读:我有一个CSV我正在导入我们的数据库.个中一个“列”包括应该是INT的数据,但有些行的数字只能在BIGINT范畴内(由于它们是来自我们的一个搭档的测试数据).我们在内部存储INT,不想改变. 我想安详地从BIGINT转发到INT.安详地,我的意思是假如产生算术溢出,则不该该
我有一个CSV我正在导入我们的数据库.个中一个“列”包括应该是INT的数据,但有些行的数字只能在BIGINT范畴内(由于它们是来自我们的一个搭档的测试数据).我们在内部存储INT,不想改变. 我想安详地从BIGINT转发到INT.安详地,我的意思是假如产生算术溢出,则不该该激发错误.假如转换/转换乐成,我但愿我的剧本继承.假如它失败了,我但愿它短路.我好像无法弄清晰正确的语法.这就是我所拥有的: DECLARE @UserIDBigInt BIGINT = 9723021913; -- actually provided by query param --Setting within the INT range successfully converts --SET @UserIDBigInt = 5; DECLARE @UserID INT = CONVERT(INT,@UserIDBigInt); --DECLARE @UserID INT = CAST(@UserIDBigInt AS INT); SELECT @UserIDBigInt SELECT @UserID IF @UserID IS NOT NULL BEGIN SELECT 'Handle it as reliable data' END 我想过将@UserIDBigInt与INT的有用范畴(-2 ^ 31(-2,147,483,648)到2 ^ 31-1(2,647))举办较量,但我真的不喜好这种要领.那是我的后备.我但愿能行使一些说话布局或内置函数.假如我必需与有用范畴举办较量,是否至少有一些内置常量(如C#的int.MinValue& int.MaxValue)? 编辑:更正错字. 办理要领将这些添加到您的剧本:SET ARITHABORT OFF; SET ARITHIGNORE ON; 这会将任何溢出值转换为NULL. 更多信息:http://msdn.microsoft.com/en-us/library/ms184341.aspx (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |