經驗分享之轉換實體中的float類型【Oracle】


背景:欠下的總是要還的,這一篇博客和大家分享一下JSON文件的解析。


一、Oracle中的基本數據類型


1、字符類型
• CHAR:一個定長字符串,當位數不足自動用空格填充來達到其最大長度。如非NULL的CHAR(12)總是包含12字節信息。CHAR字段最多可以存儲2,000字節的
信息。
• VARCHAR2:目前這也是VARCHAR 的同義詞。這是一個變長字符串,與CHAR 類型不同,它不會用空格填充至最大長度。VARCHAR2(12)可能包含0~
12字節的信息。VARCHAR2最多可以存儲4,000 字節的信息。
CHAR和VARCHAR2的比較
CHAR(4) “A“ 實際在數據庫中存儲爲"A “
“ABCDE”超長報錯
VARCHAR2(4) “A” 存儲的還是“A”
“ABCDE”超長報錯
漢字:每個漢字佔多少字節,要看具體的編碼方式,如UTF-8(1-3字節)、
GB2312(2字節)、GBK(2字節)、GB18030(1、2、4字節)


2、數字類型
• NUMBER:該數據類型能存儲精度最多達38位的數字。每個數存儲在一個變長字段中,其長度在0~22字節之間。Oracle的NUMBER類型精度很高, 遠遠高於許多編程語言中常規的FLOAT和DOUBLE類型。
NUMBER( p,s ) p表示精度(總長度) s表示小數位置且四捨五入
NUMBER(10,3) 10是總長度,3是小數位數的長度
123.456
123.4567 :將存儲爲123.457
12345679.899 :精度超長了,10是總長度,3是小數位, 整數位爲10-3=7位
NUMBER(10)==NUMBER(10,0) Java.lang.Integer
NUMBER(19)==NUMBER(19,0) java.lang.Long


3、日期類型
• DATE:一個7字節的定寬日期/時間數據類型。其中總包含7個屬性,包括:世紀、世紀中哪一年、月份、月中的哪一天、小時、分鐘和秒。
• TIMESTAMP:一個7 字節或12.字節的定寬日期/時間數據類型。它與DATE 數據類型不同,因爲TIMESTAMP 可以包含小數秒(fractional second);帶小數秒的TIMESTAMP 在小數點右邊最多可以保留9位。


4、二進制及大文本數據
• BLOB: (binary large object)在Oracle9i及以前的版本中, 這種數據類型允許存儲最多4GB的數據, 在oracle 10g及以後的版本中允許存儲最多(4GB)×(數據庫塊大小)字節的數據。BLOB包含不需要進行字符集轉換的“二進制“數據,如果要存儲電子表格、字處理文檔、圖像文件等就很適合採用


• CLOB:(Character Large Object)在Oracle9i及以前的版本中, 這種數據類型允許存儲最多4GB的數據, 在Oracle 10g及以後的版本中允許存儲最多(4GB)×(數據庫塊大小)字節的數據。CLOB包含要進行字符集轉換的信息。這種數據類型很適合存儲純文本信息。


二、問題


    Oracle數據庫中的數字類型只有NUMBER類型,如果存入的數據是float類型的,取出來的時候數據變長了,原來用MySQL庫能夠運行成功的代碼,換用Oracal後運行有問題。


三、解決方案


截取字符串顯示到界面

<p style="height:20px; white-space:nowrap;text-overflow:ellipsis;overflow:hidden;" id="comments">
    <c:set var="transparency1" value="${waterMarkList.transparency}"></c:set>
    <c:set var="transparency2" value="${fn:substring(transparency1,0,3)}"></c:set>
    透明度:
    <c:if test="${transparency2 eq '0.1'}">10%</c:if>
    <c:if test="${transparency2 eq '0.2'}">20%</c:if>
    <c:if test="${transparency2 eq '0.3'}">30%</c:if>
    <c:if test="${transparency2 eq '0.4'}">40%</c:if>
    <c:if test="${transparency2 eq '0.5'}">50%</c:if>
    <c:if test="${transparency2 eq '0.6'}">60%</c:if>
    <c:if test="${transparency2 eq '0.7'}">70%</c:if>
    <c:if test="${transparency2 eq '0.8'}">80%</c:if>
    <c:if test="${transparency2 eq '0.9'}">90%</c:if>
    <c:if test="${transparency2 eq '1.0'}">100%</c:if>
</p>

四、學習心得


1、辦法總比困難多

2、兼容性很重要





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章