Oracle 我为列数据类型选择int,但保存了number
最近,当我在SQL Developer中创建表并添加列时,当我为列数据类型选择int或integer并点击ok时,如果选择int,则选择并保存数字数据类型。在SQL代码中,它还保存为数字数据类型。有人遇到过这个问题吗 INT是数字的子类型。尽管您将其视为一个数字,但存储到列中的值将是整数。例如: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> 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中可能的最大值。刻度为零,因此只能存储整数。这不是问题,而是一个有充分证明的功能。这不是问题,而是一个有充分证明的功能。