风萧萧兮易水寒,壮士一去兮不复还,即兴赋SQL一曲

163 阅读1分钟

--DISTINCT 关键字可从查询结果中清除重复行,distinct去除整条重复的行,作用于后面所有的字段

--select distinct deptno from emp;

--(select  distinct(t.name) from com_dictionary t where t.type='USAGE' and t.code = r.usage_code)---子查询需要内嵌去重;

--select distinct deptno,job from emp;

--order by 子句对查询结果进行排序,默认从小到大排序 asc(升序排列) desc(降序排列)

--select * from emp order by deptno asc; --单个字段排序

select * from emp order by deptno desc;

select * from emp order by deptno asc,hiredate desc;--多个字段排序

--select ename "姓 名",job 工作,sal*12+ nvl(comm,0) 年薪 from emp order by 年薪 desc;--以别名排序

--NVL(column_name,value_if_null),Column_name是实际的列值,value_if_null是如果列为NULL,返回该值。

注意:value_if_null类型要和column_name的类型一致。

Decode(a.xzdm,’’-”,”0”,””,”0”, a.xzdm)-----“-”替换为0.空替换为0.其他的原来数字;(使用’ ’)

--在SELECT语句中使用DISTINCT可以减少这些重复列。

 

Character-Manipulation 函数:****

 

常用函数****

--Sysdate:获取系统时间函数

Select sysdate from dual;

 

--Add_months:指定日期增加(减少)月份的时间

Select add_months('24-10月-15', 12) from dual;

Select add_months(sysdate, 10) from dual;


--Months_between:返回两个时间之间的月份的差

Select months_between(sysdate, '24-12月-15') from dual;


--Last_day:返回本月最后一天

Select last_day(sysdate) from dual;


--Next_day:下一个日期是什么时候

Select next_day(sysdate, '星期六') from dual;


--To_date(日期, 日期格式):将一个日期按照指定的格式转成一个日期数据;

Select to_date('2015/10/24', 'yyyy-mm-dd') from dual;

--NVL(expr1,expr2),若expr1为null, 返回expr2; 不为空,返回expr1。  注意:两者类型要一致;

--NVL2 (expr1, expr2, expr3),若expr1不为NULL,返回expr2 ;为NULL,返回expr3。注意:expr2 和expr3 类型不同的话,expr3 会转换为expr2 的类型;

--NULLIF (expr1, expr2),若expr1和expr2相等,返回NULL;不相等,等返回expr1