--字符函数
select ascii('a') from dual;--返回a的十进制
select chr(97) from dual;--返回十进制对应的字符
select concat('a','b') from dual;--拼接字符串
select 'a'||'b' ss from dual;--同上
select initcap('capital') from dual; --将字符串的第一个字母变为大写
select lower('CAPITAL') from dual;--转成小写字母
select lpad('test',10) from dual;
select lpad('test',10,'ee') from dual;--eeeeeetest
select rpad('test',10,'ee') from dual;--testeeeeee
select rtrim('faf ') from dual;--去掉右面的字符串
select replace('faf ',' ','e') from dual;--fafeeee用e替换' '
select substr('faffdafsaf',2,5) from dual;--affda,从1开始计数,2是起始位置,5是长度
select TRANSLATE('faffdafsaf','f','l') from dual;--搜索f,并将f替换成l
select upper('capital') from dual;--小写转换成大写
select length('ABCD') from dual;--字符串长度
select substr('ABCD',2,1) from dual;--截取字符串,2是起始位置,1是长度
--数值函数
select round(100.567) from dual;--四舍五入101,round(100.567,2)是101.57
select trunc(100.567) from dual;--截取函数100, trunc(100.567,2) 100.56
select mod(10,3) from dual;--取模 1
--日期函数
select sysdate from dual;--当前日期时间
select add_months(sysdate,2) from dual;--在日期基础上加上指定的月
select last_day(sysdate) from dual;--求指定月的最后一天
select TRUNC(sysdate) from dual;--日期的截取 2018/10/31 星期三
select TRUNC(sysdate,'yyyy') from dual;--日期的截取,年以后的全部截去 2018/1/1 星期一
select TRUNC(sysdate,'mm') from dual;--日期的截取,月以后的全部截去 2018/10/1 星期一
select TRUNC(sysdate,'dd') from dual;--日期的截取,月以后的全部截去 2018/10/31 星期三
--转换函数
select TO_CHAR(1024) from dual;--数字转字符串 TO_CHAR
select TO_CHAR(sysdate,'yyyy-mm-dd hh:Mi:ss') from dual;--日期转字符串 TO_CHAR
select TO_DATE('2017-01-01','yyyy-mm-dd') from dual;--字符串转日期
select to_number('100') from dual;--字符串转数字
--其他函数
select NVL(NULL,0) from dual;--空值处理函数 NVL ,结果是0
select PRICE,MINNUM,NVL(MAXNUM,9999999) from T_PRICETABLE where OWNERTYPEID=1;
--decode(条件,值 1,翻译值 1,值 2,翻译值 2,...值 n,翻译值 n,缺省值)【功能】根据条件返回相应值
select name,decode( ownertypeid,1,'居民',2,'行政事业单位',3,'商业') as 类型 from T_OWNERS;
--写法二
select name ,(case ownertypeid
when 1 then '居民'
when 2 then '行政事业单位'
when 3 then '商业'
else '其它'
end
) from T_OWNERS;
--写法三
select name,(case
when ownertypeid= 1 then '居民'
when ownertypeid= 2 then '行政事业'
when ownertypeid= 3 then '商业'
end )
from T_OWNERS;
--对 T_ACCOUNT 表的 usenum 字段进行排序,相同的值排名相同,排名跳跃
select rank() over(order by usenum desc ),usenum from T_ACCOUNT;
--对 T_ACCOUNT 表的 usenum 字段进行排序,相同的值排名相同,排名连续
select dense_rank() over(order by usenum desc ),usenum from T_ACCOUNT;
--对 T_ACCOUNT 表的 usenum 字段进行排序,返回连续的排名,无论值是否相等
select row_number() over(order by usenum desc ),usenum from T_ACCOUNT;
--用 row_number()分析函数实现的分页查询
select * from
(select row_number() over(order by usenum desc )
rownumber,usenum from T_ACCOUNT)
where rownumber>10 and rownumber<=20
--集合运算
--UNION ALL(并集),返回各个查询的所有记录,包括重复记录。
select * from t_owners where id<=7
union all
select * from t_owners where id>=5
---UNION(并集),返回各个查询的所有记录,不包括重复记录。
select * from t_owners where id<=7
union
select * from t_owners where id>=5
--INTERSECT(交集),返回两个查询共有的记录。
select * from t_owners where id<=7
intersect
select * from t_owners where id>=5
--MINUS(差集),返回第一个查询检索出的记录减去第二个查询检索出的记录之后剩余的记录。
select * from t_owners where id<=7
minus
select * from t_owners where id>=5
--用 minus 运算符来实现分页
select rownum,t.* from T_ACCOUNT t where rownum<=20
minus
select rownum,t.* from T_ACCOUNT t where rownum<=10