Oracle实用SQL查询函数积累
2014-12-19 10:08
281 查看
1. 需求: 查询数据时,如果该字段值为空,则sql设置显示一个默认值,否则显示查询出来的值.
函数: nvl(param, default);
解释: 使用nvl函数时, 第一个参数是要查询的字段, 第二个参数是查询字段为空时显示的默认值, 如果不为空则显示查询出来的值
2. 需求: 查询数据时, 有一个字段存储的值是1,2,3这种, 查询时要显示为对应的中文.
函数decode(status,'1','[ON]','2','[OFF]','[OFF]');
解释: 使用decode函数相当于是一个if语句, 判断第一个参数是要查询的字段,第二个和第三个是一个组合(相当于一个if语句块),表示(值,对应值),这里中间可以有多个这样的if语句块,最后一个参数相当于else的作用,如果前面的都不满足就取最后一个值.
3. 需求: 查询时使用了like,like后面的值要是查询出来的结果
demo1: (select id from table)||'%'
demo2: select '['||count(decode(zt,'1','1'))||'/'||count(id)||']' from sb 结果是: [2/3] 这样的
解释: sql语句中使用||两个竖线来对值进行拼接,而不是+号.
4. 需求: 根据Id等条件查询出上一条和下一条数据
上一条函数: lag(a.id) over(partition by a.status order by a.yjsj desc)
下一条函数: lead(a.id) over(partition by a.status order by a.yjsj desc)
示例SQL: select t.nextid,t.beforeid from (select a.id,lead(a.id) over(partition by a.status order by a.yjsj desc) nextid,lag(a.id) over(partition by a.status order
by a.yjsj desc) beforeid from table a where a.status='0') t where t.id = ?;
5. 需求: 将两个表的结果合成一个结果集返回, 字段不对应
union all 可以将两个表的结果合成一个结果集返回, 但是要将字段对应
如: table1 id,name table2 id,name,para1,para2
select id,name,para1,para2 from table2 union all select id,name,'','' from table1
函数: nvl(param, default);
解释: 使用nvl函数时, 第一个参数是要查询的字段, 第二个参数是查询字段为空时显示的默认值, 如果不为空则显示查询出来的值
2. 需求: 查询数据时, 有一个字段存储的值是1,2,3这种, 查询时要显示为对应的中文.
函数decode(status,'1','[ON]','2','[OFF]','[OFF]');
解释: 使用decode函数相当于是一个if语句, 判断第一个参数是要查询的字段,第二个和第三个是一个组合(相当于一个if语句块),表示(值,对应值),这里中间可以有多个这样的if语句块,最后一个参数相当于else的作用,如果前面的都不满足就取最后一个值.
3. 需求: 查询时使用了like,like后面的值要是查询出来的结果
demo1: (select id from table)||'%'
demo2: select '['||count(decode(zt,'1','1'))||'/'||count(id)||']' from sb 结果是: [2/3] 这样的
解释: sql语句中使用||两个竖线来对值进行拼接,而不是+号.
4. 需求: 根据Id等条件查询出上一条和下一条数据
上一条函数: lag(a.id) over(partition by a.status order by a.yjsj desc)
下一条函数: lead(a.id) over(partition by a.status order by a.yjsj desc)
示例SQL: select t.nextid,t.beforeid from (select a.id,lead(a.id) over(partition by a.status order by a.yjsj desc) nextid,lag(a.id) over(partition by a.status order
by a.yjsj desc) beforeid from table a where a.status='0') t where t.id = ?;
5. 需求: 将两个表的结果合成一个结果集返回, 字段不对应
union all 可以将两个表的结果合成一个结果集返回, 但是要将字段对应
如: table1 id,name table2 id,name,para1,para2
select id,name,para1,para2 from table2 union all select id,name,'','' from table1
相关文章推荐
- ORACLE-SQL积累(查询外检约束、记录长度、字段长度、启用禁用触发器、case用法、分组连接函数、查询被锁表)
- Oracle Class2. SQL查询和SQL函数(Oracle数据类型,ddl,dml,dcl,事务控制语言tcl,sql操作符,sql函数,select语句,运算符,分析函数,临时表)
- Oracle事务、锁表查询及相关实用SQL语句查询
- sql中一个分解字符串的实用函数(也可用于存储过程中的 in 查询)
- Oracle常用sql语句(二)之组函数、多表查询
- Oracle简单查询,常用函数(SQL语句集)
- Oracle一些查询的案例,(查询的优先级,Sql--plus函数,数字函数,日期时间函数)[详细版]
- Oracle-oracleSQL对单表各种查询操作及函数的使用
- oracle函数,sql语句整理积累
- Oracle常用sql语句(二)之组函数、多表查询
- ORACLE SQL总结一:集合函数和多表查询
- Oracle lesson 2 SQL 查询和 SQL 函数(中)
- oracle函数返回结果集(动态查询Sql并定义游标)
- 数据库SQL中对查询结果排序排列序号编号,Oracle分析函数 rank,dense_rank,row_number使用和区别
- oracle函数返回结果集(动态查询Sql并定义游标)
- Oracle模糊查询之(3.1从使用函数和sql语法角度来提高模糊查询效率 一)oracle模糊查询效率提高
- Oracle模糊查询之(3.3从使用函数和sql语法角度来提高模糊查询效率 三)使用Oracle的instr函数与索引配合提高模糊查询的效率
- 笔记:Oracle SQL 高级查询简介 (2) 分析函数
- Day57-Oracle01 - oracle体系结构、sql语句分类和结构、基本查询、函数入门
- ArcGIS——数据库空间SQL(一、oracle中使用sql空间查询及st_astext等函数出错问题)