在熟系公司Oracle数据库时碰到了
1.![](https://img-blog.csdn.net/20180914102837312?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxMjA4MjUz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
去查了下网上已经有很好的解释
NVARCHAR2在计算长度时和字符集相关的,例如数据库是中文字符集时以长度10为例,则
1、NVARCHAR2(10)是可以存进去10个汉字的,如果用来存英文也只能存10个字符。
2、而VARCHAR2(10)的话,则只能存进5个汉字,英文则可以存10个。
VARCHAR2可变长度字符域,最大长度可达4000个字符
NVARCHAR2多字节字符集的可变长度字符域,长度随字符集而定,最多为4000个字符或4000个字节;
2.![](https://img-blog.csdn.net/20180914104029853?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxMjA4MjUz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
NUMBER [ (p [, s]) ] 是ORACLE自身的数据类型。
NUMBER数据类型可以有两个限定符,如:column NUMBER(precision,scale)。precision表示数字中的有效位。如果没有指定precision的话,Oracle将使用38 作为精度。scale表示小数点右边的位数,scale默认设置为0。如果把scale设成负数,Oracle将把该数字取舍到小数点左边的指定位数。
INTEGER或者INT、SMALLINT 则是 ANSI SQL 的数据类型,它对应的ORALCE数据类型是NUMBER(38)
integer只是plsql内部使用变量的类型
下面是具体例子用法:
123.2564 NUMBER 123.2564
1234.9876 NUMBER(6,2) 1234.99
12345.12345 NUMBER(6,2) Error
1234.9876 NUMBER(6) 1235
12345.345 NUMBER(5,-2) 12300
1234567 NUMBER(5,-2) 1234600
12345678 NUMBER(5,-2) Error
123456789 NUMBER(5,-4) 123460000
1234567890 NUMBER(5,-4) Error
12345.58 NUMBER(*, 1) 12345.6
0.1 NUMBER(4,5) Error
0.01234567 NUMBER(4,5) 0.01235
0.09999 NUMBER(4,5) 0.09999
3.![](https://img-blog.csdn.net/20180914104946107?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxMjA4MjUz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
DATE 它可以存储月,年,日,世纪,时,分和秒,当你进行两个日期的相减运算的时候,得到的是天数
TIMESTAMP 它包括了所有DATE数据类型的年月日时分秒的信息,而且包括了小数秒的信息。如果你想把DATE类型转换成 TIMESTAMP类型,就使用CAST函数。可以精确到小数秒(fractional_seconds_precision),可以是0 to9,缺省是6
为了得到系统时间,返回成date数据类型。你可以使用sysdate函数。
1 SQL> SELECT SYSDATE FROM DUAL;
为了得到系统时间,返回成timestamp数据类型。你可以使用systimpstamp函数。
1 SQL> SELECT SYSTIMESTAMP FROM DUAL;