在从oraclesql表插入和查询数据时,我遇到了一些问题。我的表名是table\ u name,它有两个列名(id number,password varchar2)。我做的插入操作很精细,但当我查询数据时,它是“1.14662e+10”这种格式。那么问题是什么呢?
ndasle7k1#
在sql*plus中,可以设置列的格式以显示列的内容。对于你的情况,你需要这样的东西:
column your_column_name format 9999999999
上面命令中的9数应该是列的最大值的位数。参见下面的示例( ROWNM 列):
ROWNM
SQL> select * from T; ROWNM NAME TOTAL COLUMN1---------- ---------- ---------- ----------1.2346E+17 Tejash ########## testSQL> column rownm format 999999999999999999SQL>SQL> select * from T; ROWNM NAME TOTAL COLUMN1------------------- ---------- ---------- ---------- 123456789123456789 Tejash ########## testSQL>
SQL> select * from T;
ROWNM NAME TOTAL COLUMN1
---------- ---------- ---------- ----------
1.2346E+17 Tejash ########## test
SQL> column rownm format 999999999999999999
SQL>
------------------- ---------- ---------- ----------
123456789123456789 Tejash ########## test
xzv2uavs2#
数据被正确存储,这只是客户机程序(这里是sqlplus)显示数据的方式的问题。如前所述,您可以使用sqlplus格式化命令或使用to\u char函数:
SQL> select x from t; X---------- 112345678901.2346E+19SQL> select to_char(x) from t;TO_CHAR(X)------------------------------------------------------------------------------------------------------------------------1123456789012345678901234567890SQL>
SQL> select x from t;
X
----------
1
1234567890
1.2346E+19
SQL> select to_char(x) from t;
TO_CHAR(X)
------------------------------------------------------------------------------------------------------------------------
12345678901234567890
jhdbpxl93#
如果您有几个大的数字列,并且不想将它们全部设置为 column . 数字有一个默认的显示宽度,超过这个宽度,格式就变成了科学记数法;但你可以改变这一点:
column
SQL> show numwidthnumwidth 10SQL> select 12345, 123456789123456789 from dual; 12345 123456789123456789---------- ------------------ 12345 1.2346E+17SQL> set numwidth 20SQL> select 12345, 123456789123456789 from dual; 12345 123456789123456789-------------------- -------------------- 12345 123456789123456789SQL>
SQL> show numwidth
numwidth 10
SQL> select 12345, 123456789123456789 from dual;
12345 123456789123456789
---------- ------------------
12345 1.2346E+17
SQL> set numwidth 20
-------------------- --------------------
它会影响所有的数字列,即使是较小的数字,正如你所看到的-所以它的方法更广泛,目标也不如单个的 column 设置,但有时会很有用。你也可以用 set numformat 更复杂的格式化,比如添加组分隔符。阅读更多关于 set 文档中的选项。
set numformat
set
3条答案
按热度按时间ndasle7k1#
在sql*plus中,可以设置列的格式以显示列的内容。对于你的情况,你需要这样的东西:
上面命令中的9数应该是列的最大值的位数。
参见下面的示例(
ROWNM
列):xzv2uavs2#
数据被正确存储,这只是客户机程序(这里是sqlplus)显示数据的方式的问题。
如前所述,您可以使用sqlplus格式化命令或使用to\u char函数:
jhdbpxl93#
如果您有几个大的数字列,并且不想将它们全部设置为
column
. 数字有一个默认的显示宽度,超过这个宽度,格式就变成了科学记数法;但你可以改变这一点:它会影响所有的数字列,即使是较小的数字,正如你所看到的-所以它的方法更广泛,目标也不如单个的
column
设置,但有时会很有用。你也可以用
set numformat
更复杂的格式化,比如添加组分隔符。阅读更多关于set
文档中的选项。