-1

次のコードがあります。varchar を int に変換しようとすると、エラーが発生します。

基本的に、次の結果を得たいと考えています。

@OutletID = 423,324

誰でも助けることができますか?

Declare @outlet varchar(1000),
    @outletID int


Select @outlet = '423,324'


Select '@Outlet',@outlet


Select @OutletID = Convert(int, @outlet, @OutletID)

varchar 値 '423,324' をデータ型 int に変換するときに変換に失敗しました

4

3 に答える 3

2

変換の前にコンマ (私はそれらが千の区切り記号であると仮定します) を削除します。

select @OutletID = cast(replace(@outlet, ',', '') as int)
于 2013-02-22T10:12:10.523 に答える
0

置換関数を使用して、変換前にすべてのカンマを削除してください。デモ

declare @outlet varchar(1000)= '3,324,345', @outletId int

select @outletId = convert(int,replace(@outlet,',',''))
select @outletId

または、それらを2つの変数に分けようとしている場合(上記のコメントに従って); デモ

declare @outlet varchar(1000)= '123,345', @id1 int, @id2 int

select @id1=left(@outlet,charindex(',',@outlet,1)-1),
       @id2=right(@outlet,len(@outlet)-charindex(',',@outlet,1))

select @id1,@id2
于 2013-02-22T10:14:30.817 に答える
0

REPLACE質問に応じて、キャストの一部として使用できます。

select cast(replace(replace(@v3, char(13), ''), char(10), '') as int)

これが頻繁に発生する場合は、データをクリーンアップし、テーブルへの入力方法を変更して、入力する前に CR と LF を削除することをお勧めします。

または、次のリンクにアクセスしてください。

http://msdn.microsoft.com/en-IN/library/ms187928.aspx

于 2013-02-22T10:21:33.423 に答える