Oracle中较长number型数值的科学计数显示问题
數據庫版本:
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
SQL> create table t(id number(20));
Table created.
SQL> insert into t(id) values(12345678901234567890);
1 row created.
SQL> insert into t(id) values(1234567890);
1 row created.
SQL> select * from t;
??????? ID
----------
1.2346E+19
1234567890
可以看到在SQL*Plus下,小于等于10位的精度顯示的是很直觀的形式,大于10位精度的則顯示為科學計數的形式。
SQL> select * from t where id=12345678901234567890;
??????? ID
----------
1.2346E+19
SQL> select * from t where id=1234567890;
??????? ID
----------
1234567890
數據都可以正確檢索,說明數值的存儲沒有任何問題,應該只是顯示的問題了。
SQL> show numwidth
numwidth 10
這就是為什么小于等于10位不會被顯示為科學計數形式的原因了,知道原因了,我們把其設置改長一點:
SQL> set numwidth 20
SQL> select * from t;
????????????????? ID
--------------------
12345678901234567890
????????? 1234567890
已經可以完全顯示所有的位數了。
在不改變numwidth設置的情況下,可以使用to_char函數完全顯示所有位數:
SQL> set numwidth 10
SQL> select to_char(id) from t where id=12345678901234567890;
TO_CHAR(ID)
----------------------------------------
12345678901234567890
此外對于一些Oracle根據,如Toad和PL/SQL Developer也會存在這樣的顯示問題,默認情況下這兩個工具的numwidth設置都是15,也給我們帶來了一些不變,可以通過以下方法:
在toad中->view->option->data->display large number in scientific notation,不選擇該選項即可
在pl/sql developer中->tools->preferences->sql windows->number fields tochar,選中該選項即可。
本文出自 “秀才” 博客,請務必保留此出處http://cau99.blog.51cto.com/1855224/362721
總結
以上是生活随笔為你收集整理的Oracle中较长number型数值的科学计数显示问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 视频格式转换工具使用
- 下一篇: 如何设置Reporting Servic