函数
- NVL
NVL(expre1,expre2)
当expre1为 null 时,返回expre2,不为null时返回expre1。
- NVL2
NVL2(expre1,expre2,expre3)
当expre1不为 null 时,返回expre2,为null时返回expre3。
- NULLIF
NULLIF(expre1,expre2)
expre1和expre2相等时返回null,不相等返回expre1。
- CASE WHEN ... THEN ... ELSE ... END (别名)
CASE
WHEN ... THEN ...
WHEN ... THEN ...
ELSE ...
END (别名)
条件判断
- DECODE
DECODE(条件,值1,返回值1,值2,返回值2,…值n,返回值n,缺省值) 别名
条件判断,如果值和条件相等,返回对应的返回值,类似Java的switch
字符串
- LOWER、UPPER、INITCAP
LOWER(str)
UPPER(str)
INITCAP(str)
转为全小写
转为全大写
转为首字母大写,其他小写
- CONCAT
CONCAT(str1,str2)
将两个字符串拼接起来,两个以上字符串拼接可以使用 ||
- SUBSTR
SUBSTR(str,index,len)
从index(Oracle中下标从1开始)开始,截取字符串str,截取len个字符
- LENGTH
LENGTH(str)
返回字符串str长度
- INSTR
INSTR(str,substr)
返回substr在字符串str中第一次出现的位置,str中没有substr返回0
- TRIM
TRIM(str)
TRIM(substr FROM str)
去除str首尾空格
去除str首尾substr
- REPLACE
REPLACE(str,search_str,replace_str)
将字符串str中的search_str用replace_str替换
数字
- ROUND
ROUND(435.45)
ROUND(435.45,1)
ROUND(435.45,-1)
435
435.5
440
四舍五入
- TRUNC
TRUNC(435.45)
TRUNC(435.45,1)
TRUNC(435.45,-1)
435
435
430
截断,不管后面的大小
- MOD
MOD(num1,num2)
num1%num2 取余数
日期
- SYSDATE
SYSDATE
返回当前日期和时间,加减数字仍为日期,可相减
- MONTHS_BETWEEN
MONTHS_BETWEEN(DATE date1,DATE date2)
返回两个日期相差的月数
- ADD_MONTHS
ADD_MONTHS(DATE date1,NUMBER num)
给指定日期date1加num个月
- NEXT_DAY
NEXT_DAY(DATE date1,weekday)
指定日期date1下一个星期(weekday)对应的日期
- LAST_DAY
LAST_DAY(DATE date1)
date1本月最后一天
- ROUND、TRUNC
ROUND(DATE date1,'YEAR')
TRUNC(DATE date1,'MONTH')
日期按年的维度四舍五入
日期按月的维度截取
- TO_DATE、TO_CHAR、TO_NUMBER
TO_CHAR(SYSDATE,'yyyy-MM-dd')
日期,字符串、数字转换函数
连接查询
- 等值连接
SELECT A.a1,B.b1
FROM A,B
WHERE A.id = B.aId
连接查询的条件相等
- 非等值连接
SELECT A.a1,B.b1
FROM A,B
WHERE A.a1 > B.b1
连接查询的条件不相等
- FULL JOIN 全连接
效果类似 UNION ALL子句
组函数和分组查询
- SUM、COUNT、AVG统计的是非空值
子查询
- ANY和ALL
ANY表示任一,即只要有一个满足即可
ALL表示所有
DDL
USER_TABLES:用户数据表
Oracle表名和列名命名规则
1)必须以字母开头;
2)长度在1-30个字符;
3)可以包含字母、数字、_、$、#数据类型
VARCHAR2(size) 可变长度字符串;
CHAR 固定长度字符串;
CLOB 长字符串,最大可达4G;
NUMBER(z,x) 数值;
DATE 日期;
BLOB 二进制数据;