Oracle学习札记:Sean
NVL()函数用于将空值null替换为指定的缺省值
语法格式NVL(exp1,exp2)
Select empno,ename,sal,com,sal+nvl(comm.,0) from emp;
若comm为空,则缺省的替换为0
------------------------------------------------------------------------------------------
NVL2(EXP1,EXP2,EXP3)
如果表达式exp1的值不为null,返回exp2的值,否则返回exp3的值
------------------------------------------------------------------------------------------
Nullif(exp1,exp2)
如果两个表达式的值相等返回null,否则返回exp1的值
------------------------------------------------------------------------------------------
Coalesce()函数用于实现数据接合
依次考察各参数表达式,遇到非空值即停止并返回该值,一般最后一个项设为常熟
------------------------------------------------------------------------------------------
Case表达式实现多路分支
Select empno,ename,sal,
Case deptno when 10 then '财务部'
When 20 then '研发部'
When 30 then '销售部'
Else '未知部门'
End 部门
From emp;
------------------------------------------------------------------------------------------
Decode表达式和case表达式类似
同上,decode表达式表示为:
Select empno,ename,sal,
decode( deptno , 10 , '财务部',
20 , '研发部',
30 , '销售部',
'未知部门')
部门
From emp;
------------------------------------------------------------------------------------------
单行函数嵌套
Select empno,ename,initcap(trim(rpad(job,10,'-')))
From emp;
------------------------------------------------------------------------------------------
rpad(job,10,'-') 向右填充,不满长度10的填充-
trim忽略空格,initcap首字符大写
group by语句
出现在select子句中的函数如果不是包含在组函数(如sum,avg等),则必须出现在group by子句中。
-------------------------------------------------------------------------------
如果没有group by子句,select中不允许出现单行函数与分组函数混用的情况
Where子句中不允许使用分组函数
Having 子句中用于过滤分组
分组函数最多可以嵌套两层
Char定长的情况下,如果输入长度不够,会默认的补空格,从中读取的时候读取原先设定的长度,因此可能需要采用trim函数进行过滤
Varchar2则不会自动添加空格
Contact(ename,job)连接两个字符串,与 || 方法类似
Instr(‘hello world’,’or’) 在前一个字符串中定位第二个字符串位置,未找到返回0,位置从1开始计算
To_char(Date),To_char(Date,’formal_date’)用于将date转化为char类型
‘fm yyyy-mm-dd hh24:mi:ss am’,fm表示去掉零,am表示显示上下午