2017-04-18 18 views
0

同じ列名と構造を持つ2つのテーブル(テーブルAとテーブルB)があります。要件の変更により、列の1つのデータ型をnvarcharから表Aのintに変更するように求められました。データ型をintに変更し、IsNumericを使用したときにすべての値を失いました。今、テーブルB(nvarchar)からテーブルA(int)に値を挿入して、一致するIDに基づいて失われた値をすべて置換しようとしています。SQL Server:あるテーブルから別のテーブルのint列にnvarchar値を挿入します

私は以下しようとしたが、変換エラーを取得しました:(

0.1 
0.05 
1 
0 

しかし、私はテーブルAには、このような値が欲しい: varchar型:TABLEB上

insert into TableA([Percentage]) 
    select CAST(Percentage] as int) 
    from TableB 
    where ID in (select ID] from TableA)` 

私の入力値は、このようなものです100倍): Int:

10 
5 
100 
0 

任意のhel pが高く評価されています!

+3

100倍のヘルプが必要ですか? – Jamiec

+1

'キャスト(キャスト([パーセンテージ] AS番号)* 100 AS INT)' – fqhv

答えて

3

updateと思っていますが、insertではありませんか?いずれにせよ、それは問題ではない。 SQL Server 2012以降では、try_convert()を使用する必要があります。

私は、あなたがしたいと思う:固定小数点数に、この最初の改宗こと

update a 
    set Percentage = floor(100 * try_convert(decimal(10, 4), b.Percentage)) 
    from TableA a join 
     TableB b 
     on a.id = b.id; 

は注意して、整数にその値を変換します。 1.00のような文字列を整数に直接変換するとエラーになります。

+0

ありがとう!これは機能します。私の入力は次のようになります:6,565.00 15,300.00 4,375.00 3,711.00 in nvarcharと出力は10進数で同じにする必要があります – user7617078

+0

try_convert(10進数14,4)、a.fee)。しかし、私の出力は常に:0.0000 – user7617078

+0

@ user7617078です。 。 。小数点への変換ではカンマを理解できません。 'money'を使って変換することも、' replace() 'だけを使ってコンマを削除することもできます。 –

関連する問題