数值操作
数值类型
1、NUMBER (P)表示整数
完整语法:NUMBER(precision,scale)
如果没有设置scale ,则默认取值0 ,即NUMBER(p)表示整数
P表示数字的总位数,取值为1-38。用来在表中存放如编码、年龄、次数等用整数记录的数据。
2、NUMBER (P,S)表示浮点数
NUMBER(precision,scale)
precision:NUMBER可以存储的鼉大数字长度(不包括左右两边的0)
scale:在小数点右边的最大数字长度(包括左侧0 )
指定了s但是没有指定p ,则p默认为38 ,如:
列名 number(*,s) 经常用来做表中存放金额、成绩等有小数位的数据。
NUMBER的变种数据类型:内部实现是NUMBER ,可以将其理解为NUMBER的别名,目的是多种数据库及编程语言兼容
NUMERIC(p,s):完全映射至NUMBER(p,s)
DECIMAL(p,s)或DEC(p,s):完全映射至NUMBER(p,s)
INTEGER或INT :完全映射至NUMBER(38)类型
SMALLINT:映射至NUMBER(38)类型
FLOAT(b):映射至NUMBER类型
DOUBLE PRECISION:映射至NUMBER类型
REAL:映射至NUMBER类型
ROUND
ROUND(n[,m]):用于四舍五入
参数中的n可以是任何数字,指要被处理的数字
- m必须是整数
- m取正数则四舍五入到小数点后第m位
- m取0则四舍五入到整数位
- m取负数,则四舍五入到小数点前m位
- m缺省,默认值是0
TRUNC
TRUNC(n[,m]):用于截取
n和m的定义和ROUND(n[,m])相同,不同的是功能上按照截取的方式处理数字n。
MySQL没有TRUNC函数。
MOD
MOD(m, n):返回m除以n后的余数;
n为0则直接返回m。
MySQL中n为0返回null;
CEIL和FLOOR
CEIL(n):取大于或等于n的最小整数值
FLOOR(n):是取小于或等于n的最大整数值
日期操作
ORACLE中最常用的日期类型,用来保存日期和时间 DATE表示的日期范围可以是公元前4712年1月1日至公元9999年12月31日。
TIMESTAMP与DATE的区别是不仅可以保存曰期和时间,还能保存小数秒,最高精度可以到ns(纳秒)
SYSDATE其本质是一个Oracle的内部函数,返回当前的系统时间,精确到秒;
默认显示格式是DD-M0N-RR
SYSTIMESTAMP
内部函数,返回当前系统日期和时间,精确到毫秒。
TO_DATE
TO_DATE(char[,fmt[,nlsparams]]):将字符串按照定
制格式转换为日期类型
char:要转换的字符串
fmt:格式
nlsparams:指定日期语言
TO_CHAR
将其它类型的数据转换为字符类型
TO_CHAR(date[,fmt[,nlsparams]]):
将日期类型数据date按照fmt的格式输出字符串。
nlsparams用于指定日期语言
ORACLE中,日期格式字符串中,除了特殊字符以及英文符号以外,任何字符输出都需要双引号扩上,否则报错。
LAST_DAY
LAST_DAY(date):返回日期date所在月的最后一天,在按照自然月计算某些业务逻辑,或者安排月末周期性活动时很有用处。
ADD_MONTHS
ADD_MONTHS(date, i):返回日期date加上i个月后的日期值
参数i可以是任何数字,大部分时候取正讎数
如果i是小数,将会被截取整数后再参与运算
如果i是负数,则获得的是减去i个月后的日期值
MySQL只有ADDDATE函数:
DATE_ADD(date,INTERVAL expr type)
date 参数是合法的日期表达式。expr 参数是您希望添加的时间间隔。
例:
SELECT ename,ADDDATE(hiredate,INTERVAL 20*12 MONTH)FROM emp;
SELECT语句返回的结果集,给列加别名用于增加可读性
SELECT 列名 别名,列名 别名 FROM 表
--别名不能以数字开头,若以数字开头,别名需要用""括上
同样不能以符号开头。
MONTHS_BETWEEN
MONTH_BETWEEN(date1, date2):计算date1和date2两个日期值之间间隔了多少个月。实际运算是date1-date2 ,如果date2时间比date1晚,会得到负值
除非两个日期间隔是整数月,否则会得到带小数位的结果,比如计算2009年9月1日到2009年10月10日之间间 隔多少个月,会得到1.29个月。
MySQL中没有这个语句
data日期类型在数据库中可以进行减法操作,结果是相差的天数。
SELECT to_date('1999-05-18','YYYY-MM-DD') - to_date('1988-10-31','YYYY-MM-DD') FROM DUAL;
LEAST,GREATEST
GREATEST(expr1[,expr2[, expr3]]...)
LEAST(expr1[,expr2[, expr3]]...)
也被称作比较函数,可以有多个参数值,返回结果是参数列表中最大或最小的值参数类型必须一致
在比较之前,在参数列表中第二个以后的参数会被隐含的转换为第一个参数的数据类型,所以如果可以转换,则继续比较,如果不能转换将会报错。
不限于日期函数。
EXTRACT
EXTRACT(date FROM datetime):
从参数datetime中 提取参数date指定的数据,比如提取年、月、日
NULL操作
数据库里的重要概念:NULL ,即空值。
有时表中的某些字段值,数据未知或暂时不存在,取值
NULL。
任何数据类型均可取值NULL。
NVL
NVL(expr1, expr2):将NULL转变为非NULL值
如果expr1为NULL ,则取值expr2, expr2是实际值
expr1和expr2可以是任何数据类型,但两个参数的数据类型必须是一致的
MySQL中的函数是:IFNULL(expr1,expr2)
NVL2(expr1, expr2, expr3):和NVL函数功能类似,都是将NULL转变为实际值。
NVL2用来判断expr1是否为NULL,如果不是NULL ,返回expr2 ,如果是NULL,返回expr3。
MySQl中函数为IF(expr1,expr2,expr3)