转换nvarchar值'7575932'时转换失败。数据类型为int
问题描述:
我有开始没有这个遗留代码...转换nvarchar值'7575932'时转换失败。数据类型为int
UPDATE B2C
SET B2C.dborderid = A.order_number__c
FROM b2csf B2C
JOIN Alemania A ON B2C.actualid = A.salesforce_id
我得到这个错误:
Msg 245, Level 16, State 1, Line 1
Conversion failed when converting the nvarchar value '7201799-' to data type int.
我继续将其改为:
UPDATE B2C
SET B2C.dborderid = (CASE
WHEN Isnumeric (a.order_number__c) = 1
THEN CAST(a.order_number__c AS INT)
END)
FROM b2csf B2C
JOIN Alemania A ON B2C.actualid = A.salesforce_id
而且现在我得到
个Msg 245, Level 16, State 1, Line 1
Conversion failed when converting the nvarchar value '7575932.' to data type int.
我的问题现在:
我怎样才能避免这个错误?我不介意比如输掉'7575932'。 (理想情况下,我想丢弃'7575932.'值)
我在尽我所能去遵循最佳实践......正在将列
DBorderid
改为nvarchar
唯一的“最佳实践”替代方案?
(我使用SQL Server 2008)
答
代替... WHEN Isnumeric (a.order_number__c) = 1 ...
使用... WHEN Isnumeric (a.order_number__c + '.0e0') = 1 ...
它的工作很好,谢谢,现在我得到:消息248,级别16,状态1,2号线nvarchar值'3545427103'的转换溢出了一个int列。该语句已终止。是否有任何内嵌优雅/最佳实践解决方案? – Chicago1988
@ Chicago1988如何处理这种附加条件('3545427103'作为数字(38,0))在-2147483648和2147483648之间,那么......' – Max
听起来不错,但不好的数据会继续下去......所以呢最终会再次失败......我不能相信我找不到这个简单的东西的解决方案... – Chicago1988