我有一个游标,它从表格中提取参考代码,如果符合某些标准,则将代码加1。引用是字母数字,因此它被声明为nvarchar。尽管使用CAST,转换错误?
为了简单起见,假设@RefNo = 'v1'
,以改变这个打算V2:
DECLARE @versionNo INT
DECLARE @RefNo nvarchar(50)
DECLARE @NewVersionNo INT
DECLARE @NewRefNo nvarchar(50)
set @VersionNo = Right(@RefNo, 1)
set @NewVersionNo = @versionNo + 1
set @NewRefNo = Left(@RefNo, Len(@RefNo - 1)) + cast(@NewVersionNo as nvarchar)
print @NewRefNo
最后一行失败,错误Conversion failed when converting the nvarchar value 'v1' to data type int.
在一定程度上我知道为什么发生这种情况 - 在“+”运算符不能同时处理nvarchar和int值 - 但我会认为在@NewVersionNo上强制转换为nvarchar会避免这种情况。
另请注意,我使用的是2008R2,因此无法使用CONCAT功能。
你需要指定varchar的长度。它将使用30的默认长度。但是当然如果它是一个参数,默认值是1.保存你自己的麻烦并且明确。 –