2016-03-23 10 views
1

varchar(50)カラムのテーブルに通貨の値が格納されています。残念ながら、私はインポートされるデータを変更することはできませんし、値は小数点なしで格納されます。私は小数点を追加するために100でそれらを分割することができる形式でvarchar列から値を取得する必要があります。小数点を追加するために列を更新するだけでいいですね。テキストとして保存された数字に10進数を追加するには?

私はCONVERTingとCASTingを試しましたが、100で割ったときに実際に除算を実行するのではなく、右端の2桁を切り捨てるように見えます。

最終的には、この列に小数点を追加するだけで完全に困惑しています。

ご協力いただければ幸いです。

ありがとうございます!

+0

http://stackoverflow.com/questions/17300683/insert-character-into-sql-string – user234461

答えて

1

は、あなたが望むものを、このです:

declare @Currency as varchar(50) 
    set @Currency = 8000; 

    declare @CurrencyDecimal as decimal(18,2) 
    set @CurrencyDecimal = @Currency /100 

    select cast(@CurrencyDecimal as varchar(50)) 

および/または本:

select cast(@Currency/100 as decimal(18,2)) 

    select convert(DECIMAL(18,2),@Currency/100) 

更新が必要な場合:

update t1 
set Currency = cast(Currency as decimal(18,2)) 
where = -- some condition 

Data Types (Transact-SQL)

CAST and CONVERT

+0

本当にありがとうございました!これはトリックを美しくしました!私はそれがなぜ機能するのか理解していないことを認めます。このことをよりよく理解するために私が勉強すべきコンセプトを教えていただけますか? (私はまだこのサイトには比較的新しいので、私はあなたの答えをupvoted、彼らはまだ私の投票を数えていません。):) –

+0

あなたはデータ型について知っている必要がありますどのように変換することができます..私は私の編集2つのリンクで回答 – Dejan

+0

優秀!本当にありがとう! –

0

STUFF関数を使用してこのリクエストに応答することができます: 「10進数を追加するには列を更新するだけでいいですか」

UPDATE [table] SET [column] = STUFF([column],LEN([column])-1,0,'.') 
関連する問題