2016-09-29 5 views
2

私は、テーブルから参照コードを取り出し、特定の条件を満たす場合はコードを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機能を使用できません。

+0

varcharの長さを指定する必要があります。それはデフォルトの長さ30を使用します。しかし、それがパラメータだった場合、デフォルトは1になります。あなた自身を面倒なく保存してください。 –

答えて

6

あなたの持っている場所の閉じ括弧は、

set @NewRefNo = Left(@RefNo, Len(@RefNo) - 1) + cast(@NewVersionNo as nvarchar) 
          -----------^ 

次のように行のコードを変更ミスの場合@ REFNO = 'V1'

出力:

enter image description here

+2

@Jaydip nice formating –

関連する問題