關於oracle當中數據類型轉換的問題


今天在做項目的過程當中發現,我們在使用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()方法即可。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM