如果我在 plsql 或 sql 中选择超过 16 位数字,并且我得到错误的值,我现在就会遇到这种情况:
// the below from plsql
select 12345678901213 from dual
1.23456789101112E16
这是什么原因呢?以及如何在我的程序中解决这个问题?因为我连接了超过 16 位数字并将它们插入到表格中。
以下来自 sqlplus
最佳答案
SQLPLUS
使用SET NUMWIDTH
,来自sqlplus
命令行的示例:
SQL> SHOW NUMWIDTH
numwidth 10
SQL> select 12345678901213 from dual;
12345678901213
--------------
1,2346E+13
SQL> SET NUMWIDTH 20
SQL> select 12345678901213 from dual;
12345678901213
--------------------
12345678901213
PL/SQL
将值转换为正确的数据类型,示例(来自 sqlplus
):
SQL> set serveroutput on
SQL> DECLARE
2 my_number NUMBER;
3 BEGIN
4 select 12345678901213 into my_number from dual;
5 dbms_output.put_line('Number:'|| my_number);
6 END;
7 /
Number:12345678901213
关于sql - 选择超过 16 位数字会导致值错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46466611/