溢出int列以前我是使用自动生成的临时表,但在一个场景中,我得到这个错误:将nvarchar的值的转换在SQL
The conversion of the nvarchar value '182681000422' overflowed an int column
所以我创建了一个临时表,我定义的每个列中手动这样
Begin
Drop Table #tmpSTDistData
End
create table #tmpSTDistData
(
DistRawProdIdentifier Varchar(50)
)
如果在表1 RawProductIdentifier
(数据类型int
)的值是NULL它将从表2得到其值为TranslationCriteria2
(数据类型varchar
这里)。我仍然得到同样的错误。
INSERT INTO #tmpSTDistData
SELECT
DistRawProdIdentifier = (CASE ISNULL(dist.RawProductIdentifier, 0)
WHEN 0
THEN CAST(tm.TranslationCriteria2 as NVARCHAR(50))
ELSE 0
END)
你必须用'CASE'表达了一个问题:所有的路径' CASE'必须返回**相同的数据类型**,因为你没有做(一旦返回'int',一旦一个'nvarchar(50)'),那么SQL Server会将其中一个返回值转换为具有更高优先级的数据类型。由于'int'的优先级高于'nvarchar',所以'nvarchar'的字符串会被转换为'int',并且会失败。 –
我正在使用SQL服务器 –