number不用定义长度,ORACLE自动按数据大小评估占用的存储空间。这一点有点像varchar2。 ORACLE里能表示的数字,最大22byte。你定义的number(p,s),分别是刻度和精度,而不是存储的最大长度。 SQL> create table test (id number(38));表已创建。SQL> desc test 名称 是否为空? 类型 ----------------------------------------- -------- ---------------------------- ID NUMBER(38)SQL> select column_name,data_type,data_length from user_tab_columns 2 where table_name='TEST';COLUMN_NAME ------------------------------ DATA_TYPE --------------------------------------------------------------------------------DATA_LENGTH ----------- ID NUMBER 22 SQL>
分别存储:世纪、年、月、日、时、分、秒。
ORACLE里能表示的数字,最大22byte。你定义的number(p,s),分别是刻度和精度,而不是存储的最大长度。
SQL> create table test (id number(38));表已创建。SQL> desc test
名称 是否为空? 类型
----------------------------------------- -------- ---------------------------- ID NUMBER(38)SQL> select column_name,data_type,data_length from user_tab_columns
2 where table_name='TEST';COLUMN_NAME
------------------------------
DATA_TYPE
--------------------------------------------------------------------------------DATA_LENGTH
-----------
ID
NUMBER
22
SQL>
现在检索的结果是22,这个数没什么用