2017-03-07 91 views
-1

我有這種類型的值列(varchar(100),null):USTX00001099。SQL - 將VARCHAR轉換爲十進制

此值的最後四個字符意味着$ 10.99

我如何轉換/在選擇功能提取10.99?

+0

您使用哪種rdbms? –

+0

它總是最後4個字符? –

+0

前4個字符是否總是'USTX',後面是帶有隱含小數位的數字? – BWS

回答

0

這可能是這樣的:

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

對不起BWS,我是新手。我正在查看這些值,它並不總是相同數量的字符。但我想要做的是使用RIGHT函數並選擇最後4個字符併除以100.但是,當我有這個值:0499新值將會是4而不是4.99我使用這個選擇: RIGHT(COLUMN,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)) 

我認爲更好的方法是在轉換字符串之前格式化字符串。類似於

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

這應該回答您當前的問題。然而,你會遇到問題,試圖爲成本數百或數千美元的物品做到這一點。

相關問題