我有一个光标从表中获取参考代码,如果符合某些条件,则将代码增加1。引用是字母数字,因此它被声明为nvarchar。
为了简单起见,假设@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功能。