lower() 轉換爲小寫
select lower(ename) as ename from emp;
upper() 轉換爲大寫
seclect upper(ename) as ename from emp;
substr()截取子串
- 語法 substr(被截取的字段名,起始下標,截取長度),起始下標從1開始
查詢並顯示姓名的第二個字母
select substr(ename,2,1) from emp;
查詢姓名中第二個字母爲a的員工
select ename from emp where substr(ename,2,1) = 'a';
回顧一下like(上一篇模糊查詢)
select ename form emp where like '_a%';
length()獲取字段長度
select ename,length(ename) as namelength from emp where name
ifnull()空值處理
- 該函數接受連個參數:ifnull(字段名,替換值)
- 在數據庫中,有Null參與數學運算的結果一定爲Null;爲了防止計算結果出現Null,建議使用ifnull()方法預處理。
查詢補助,如果補助爲Null設置爲0;
select ifnull(comm,0) from emp;
查詢員工的一年總薪水(sal工資+comm補助)
select ename,(sal+ifnull(comm,0)*12) as totaSal from emp;
沒有補助的員工,每月補助100,求員工的年薪
select ename, (sal + ifnull(comm,100)) * 12 as yearsal from emp;
case…when…then…else…end (case匹配那個字段,when當匹配的字段爲…then那麼…,eles其餘的情況…end結束)
匹配工作崗位job,當爲MANAGER時,薪水上調10%,當爲SALESMAN時,薪水上調50%,其它崗位薪水不變。
select ename,sal,job,
(case job
when 'MANAGER' then sal *1.1
when 'SALESMAN' then sal *1.5
else sal
end)
from emp;
trim()出去收尾空格
取得工作崗位job爲manager的所有員工
select ename,sal,job from emp where job = trim(' manager ')
round()四捨五入
- 該函數接受連個參數round(處理字段,保留幾位小數)
查看員工薪水sal保留1位小數:
select round(sal,1) as sal from emp;
rand()生成隨機數
生成一個隨機數
select rand();
生成多個隨機數
select ename,rand() from emp;
str_to_date()字符串轉日期
- 該函數接受連個參數,str_to_date(‘日期字符串’,‘日期格式’)
- 日期格式可包含
- 2016-06-15;2016/06/15;20160615這三種格式
- %Y 代表四位的年份
- %y 代表兩位的年份
- %m 代表月,格式(01 … 12)
- %c 代表月,格式(1 … 12)
- %d 代表日
- %H 代表24小時制
- %h 代表12小時制
- %i 代表分種,格式(00 … 59)
- %S或%s 代表秒 , 格式(00…59)
查詢出入職時間hiredate爲1981-12-03入職的員工:
select ename,hiredate from emp where hiredate = '1981-12-03';
使用str_to_date()函數查詢02-20-1981年入職的員工(將02-20-1981需要轉換爲1981-02-20)纔可以識別
select ename,hiredate from emp where hiredate = str_to_date('02-20-1981','%m-%d-%Y');
date_format()格式化日期
- 該函數接受連個參數,date_format(日期類型數據,‘時間格式’)
查詢員工的入職日期,以’10-12-1980’的格式顯示到窗口中
select ename,date_format(hiredate,'%m-%d-%Y') as hiredate from emp ;