今天在做項目的過程當中發現,我們在使用mybatis從數據庫中拿數據。但是死活不能轉化成我們想要的形式。
然后在網上查了相關的資料;
基本的轉化如下:
select CAST('1034.0' AS NUMBER (10, 2) ) as aa from UTTDB.UTT_TRANS_LOG
這里使用的是將數據轉換成number類型,然后保留兩位小數的形式。
select CAST(TRANS_AMT AS DECIMAL (10, 2) ) as aa from UTTDB.UTT_TRANS_LOG
這里是將數據轉換成為decimal類型,然后保留兩位小數的形式。
select to_char(TRANS_AMT, '999.00') as aa from UTTDB.UTT_TRANS_LOG
這里是將數據轉換成字符的形式,也是保留兩位小數。
這里值得注意的是,我們在對數據進行轉換的時候一定要注意數據的長度,否則轉換的結果就出現下面的情況:
select to_char(TRANS_AMT, '99.00') as aa from UTTDB.UTT_TRANS_LOG
這條語句是將數據轉化成最大99,保留兩位小數的形式。然后看下面的結果:

這里明顯的看到我們在對數據比較大的進行轉化的時候出現了錯誤,所以轉化一定要和數據庫保持一致。
還有一點需要注意,在oracle當中我們將數據轉換成字符串的時候,如果位數很多,他就會在前面補充相應的空格。例子如下:
SELECT to_char(TRANS_AMT, '9999999999999999999999999999999999999999999999.00')as aa from UTTDB.UTT_TRANS_LOG
這里的位數過多的話,在查詢的時候顯示的效果如下:
從上面可以看出在數據位數不夠的情況下,我們會看到被空格占據。這個時候我們就要考慮去空格的操作:
這時候去除左邊的空格,操作如下:
SELECT LTRIM(to_char(TRANS_AMT, '9999999999999999999999999999999999999999999999.00'))as aa from UTTDB.UTT_TRANS_LOG
使用LTRIM()方法即可。