Oracle 我为列数据类型选择int,但保存了number

Oracle 我为列数据类型选择int,但保存了number,oracle,oracle-sqldeveloper,Oracle,Oracle Sqldeveloper,最近,当我在SQL Developer中创建表并添加列时,当我为列数据类型选择int或integer并点击ok时,如果选择int,则选择并保存数字数据类型。在SQL代码中,它还保存为数字数据类型。有人遇到过这个问题吗 INT是数字的子类型。尽管您将其视为一个数字,但存储到列中的值将是整数。例如: SQL> create table test (col int); Table created. SQL> desc test Name

最近,当我在SQL Developer中创建表并添加列时,当我为列数据类型选择int或integer并点击ok时,如果选择int,则选择并保存数字数据类型。在SQL代码中,它还保存为数字数据类型。有人遇到过这个问题吗

INT是数字的子类型。尽管您将其视为一个数字,但存储到列中的值将是整数。例如:

SQL> create table test (col int);

Table created.

SQL> desc test
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 COL                                                NUMBER(38)

SQL> insert into test (col) values (1.3324);

1 row created.

SQL> insert into test (col) values (0.000034);

1 row created.

SQL> insert into test (col) values (1001);

1 row created.

SQL> select * from test;

       COL
----------
         1
         0
      1001

SQL>
如果您创建另一个表,其列的数据类型为NUMBER,并选中USER_TAB_COLUMNS,您将看到它们的小数位数的不同,这取决于小数点的符号。最好同时指定精度和比例,以便您可以控制它。如果在创建列时忽略“比例”,则其默认值为0。更多信息请点击此处:

例如:

SQL> create table test1 (col number);

Table created.

SQL> select table_name, data_precision, data_scale From user_tab_columns where column_name = 'COL';

TABLE_NAME                     DATA_PRECISION DATA_SCALE
------------------------------ -------------- ----------
TEST                                                   0
TEST1

SQL>
INT是数字的子类型。尽管您将其视为一个数字,但存储到列中的值将是整数。例如:

SQL> create table test (col int);

Table created.

SQL> desc test
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 COL                                                NUMBER(38)

SQL> insert into test (col) values (1.3324);

1 row created.

SQL> insert into test (col) values (0.000034);

1 row created.

SQL> insert into test (col) values (1001);

1 row created.

SQL> select * from test;

       COL
----------
         1
         0
      1001

SQL>
如果您创建另一个表,其列的数据类型为NUMBER,并选中USER_TAB_COLUMNS,您将看到它们的小数位数的不同,这取决于小数点的符号。最好同时指定精度和比例,以便您可以控制它。如果在创建列时忽略“比例”,则其默认值为0。更多信息请点击此处:

例如:

SQL> create table test1 (col number);

Table created.

SQL> select table_name, data_precision, data_scale From user_tab_columns where column_name = 'COL';

TABLE_NAME                     DATA_PRECISION DATA_SCALE
------------------------------ -------------- ----------
TEST                                                   0
TEST1

SQL>
INT不是Oracle而是ANSI数据类型,它在Oracle内置数据类型中进行转换,如所述

INT转换为NUMBERp,0

重要的一点是,在Oracle metadata USER_TAB_列中,您只能看到转换后的Oracle内置类型

从技术上讲,转换后的数据类型是NUMBER*,0,您可以在SQLDeveloper中将其视为生成的表DDL

这意味着使用Oracle 38中可能的最大值。刻度为零,因此只能存储整数。

INT不是Oracle而是ANSI数据类型,在Oracle内置数据类型中进行转换,如前所述

INT转换为NUMBERp,0

重要的一点是,在Oracle metadata USER_TAB_列中,您只能看到转换后的Oracle内置类型

从技术上讲,转换后的数据类型是NUMBER*,0,您可以在SQLDeveloper中将其视为生成的表DDL


这意味着使用Oracle 38中可能的最大值。刻度为零,因此只能存储整数。

这不是问题,而是一个有充分证明的功能。这不是问题,而是一个有充分证明的功能。