sql 笔记【2017-11-21】
单行函数
(1)不同类型的函数;
(2)转换函数;
(3)条件表达式
字符串函数:
(1)lower(str)转小写;
(2)upper(str)转大写;
(3)initcap(str)将单词的首字母大写;
(4)concat(str1,str2)连接字符串;
(5)substr(str,x,y)取字符串的子串,注意X是指从str的第几个字母开始,y是一共需要取几个字母;
(6)length(str) 取字符串的长度;
(7)instr(str,c)取字符c在字符串str第一次出现的位置;eg instr(‘helloworld’,’l’) 如果该字符不存在字符串里面,则返回0;
(8)lpad(str,n,c)将字符串str对齐,一共取n个字符位置,不足的左边补上字符c;
eg:select lpad(id,10,'*') from activity;
LPAD(ID,10,'*')
--------------------
********36
********37
********38
(9)rpad(str,n,c)右对齐,原理同左对齐;
eg select rpad(id,10,'*') from activity;
RPAD(ID,10,'*')
--------------------
36********
37********
38********
(10)trim(c from str)去除前后的指定字符[注意只是去除前后的而不是去除中间的]
eg select trim('h' from 'hhhhhhaahhahhh') from dual;
TRIM('H'FROM'HHHHHHAAHHAHHH')
-----------------------------
aahha
(11)repalce(str,c1,c2) 将字符串str中的字符c1全部替换成为c2
eg select replace('ababaggbb','b','m') from dual;
REPLACE('ABABAGGBB','B','M')
----------------------------
amamaggmm
数字函数:
(1)round(n,x)四舍五入取得数n在精度为x的情况下四舍五入所得的值;
eg select round(45.45,2),round(45.45),round(45.45,-1) from dual;
ROUND(45.45,2) ROUND(45.45) ROUND(45.45,-1)
-------------- ------------ ---------------
45.45 45 50
(2)trunc(n,x)不用四舍五入,直接截断n在精度为x的情况下所得出的值;
eg select trunc(45.45,1),trunc(45.45),trunc(45.45,-1) from dual;
TRUNC(45.45,1) TRUNC(45.45) TRUNC(45.45,-1)
-------------- ------------ ---------------
45.4 45 40
2017-11-21[周三 小雪]
数字函数
(1)mod(a,b)取得a除以b的余数
eg select mod(100,30) from dual;
MOD(100,30)
-----------
10
日期函数
(1)在日期上面加上或者减去一个数字仍为日期;
eg select sysdate,sysdate+1,sysdate-3 from dual;
SYSDATE SYSDATE+1 SYSDATE-3
----------- ----------- -----------
2017/11/22 2017/11/23 2017/11/19
(2)两个日期相减返回日期之间相差的天数‘
–日期之间不允许做加法,无意义;
eg select sysdate -(sysdate+2) from dual;
SYSDATE-(SYSDATE+2)
-------------------
-2
(3)可以使用数字除以24来向日期中加上或者减去天数;
(4)months_between(date1,date2) 返回两个日期之间的相隔的月份;
eg select months_between(sysdate,(sysdate-90)) from dual;
MONTHS_BETWEEN(SYSDATE,(SYSDAT
------------------------------
2.93548387096774
(5)add_months(date1,months)在日期date1上面添加months个月份后得到的日期;
eg select sysdate ,add_months(sysdate,2),add_months(sysdate,-3),next_day(sysdate,'星期一') from dual;
SYSDATE ADD_MONTHS(SYSDATE,2) ADD_MONTHS(SYSDATE,-3) NEXT_DAY(SYSDATE,'星期一')
----------- --------------------- ---------------------- --------------------------
2017/11/22 2018/1/22 10:56:23 2017/8/22 10:56:23 2017/11/27 10:56:23
(6)next_day(date,’星期几’)获取到距离日期date最近的一个星期几的具体日期;