2010-03-31 91 views
2

有一個類型爲varchar的字段。它實際上存儲一個浮點數字符串。 Like 2.0,12.0,34.5,67.50 ... 我需要的是一個更新語句,刪除像2.0,12.0等字段的結尾零,將它們更改爲它們的整數表示形式,即2,12 ...並離開3.45,67.50未變。我應該怎麼做?我正在使用oracle 10.需要一個簡單的SQL更新語句幫助

回答

6

只要在田裏的唯一數據是數字那麼這樣的事情應該做...

UPDATE <table> 
    SET not_string = TRIM(TO_CHAR(TO_NUMBER(not_string), '999999999999')) 
WHERE TO_NUMBER(not_string) = TRUNC(TO_NUMBER(not_string)) 

WHERE子句應該限制更新整數,設置部位轉換VARCHAR2添加到一個數字,然後返回到VARCHAR,並返回字段中所需的格式(根據需要更改數字9或依賴NLS設置)。

而且,因爲大多數人(或至少應該是)想它..

如果字段是那麼多的IT存儲在正確的數據類型,格式可以輸出有所改變,這種串解析可以避免!

1

這是行不通的嗎?

UPDATE Table Set Field = CAST(CAST(CAST(Field AS float) AS int) AS varchar(128)); 
+0

Blearghh ... Oracle,我總是假設T-SQL,這可能行不通,對不起 – LorenVS 2010-03-31 06:36:20

+0

不行,這是行不通的。它可以投0.75到1,它應該改變浮點數字符串。 – Sawyer 2010-03-31 06:44:45