2017-03-07 3 views
-1

このタイプの値を持つこの列(varchar(100)、null)はUSTX00001099です。SQL - VARCHARを10進数に変換する

この値の最後の4つの文字は$ 10.99

がどのように選択機能で10.99を抽出変換する/できることを意味しますか?それは、この可能性が

+0

どのrdbmsを使用しますか? –

+0

それは最後に4文字ですか? –

+0

最初の4文字は常に「USTX」の後に10進数の暗黙の数字が続きますか? – BWS

答えて

0

SELECT TO_NUMBER(SUBSTR(col, 4))/100. FROM table 
+0

申し訳ありませんがBWS、私はこれで初めてです。私は値を見ているし、常に同じ文字数ではありません。しかし私がしようとしているのは、右の関数を使用して、最後の4文字を選択し、100で割ることです。しかし、私はこの値を持っている:0499新しい値は4.99ではなく、右(列、4)/ 100 – ACL

0

二つの方法が思い浮かびます。 まず、あなたは、彼の最後の4桁の数字を選択する数値型に変換した後、あなたは書式設定の通貨を強化する必要がある場合、あなたは

のような他のキャストを使用することができます4.

select cast(right(name,4) as float)/100 

によって分割することができます

select cast(cast(right(name,4) as float)/100 as numeric(8,2)) 

第2の私はそれをキャストする前に文字列をフォーマットすることをお勧めします。何かのように

select cast(SUBSTRING(name,len(name)-3,2) + '.' + RIGHT(name,2) as numeric(8,2)) 

これはあなたの現在の質問に答える必要があります。しかし、あなたは何百ドルか何千ドルものコストがかかるアイテムに対してこれをしようとすると問題に遭遇します。

関連する問題