Lower |
轉換小寫 |
upper |
轉換大寫 |
substr |
取子串(substr(被截取的字符串,起始下標,截取的長度)) |
length |
取長度 |
trim |
去空格 |
str_to_date |
將字符串轉換成日期 |
date_format |
格式化日期 |
format |
設置千分位 |
round |
四舍五入 |
rand() |
生成隨機數 |
Ifnull |
可以將null轉換成一個具體值 |
lower
查詢員工,將員工姓名全部轉換成小寫
select lower(ename) from emp;
查詢job為manager的員工
select * from emp where job=upper('manager');
查詢姓名以M開頭所有的員工
select * from emp where substr(ename, 1, 1)=upper('m');
取得員工姓名長度為5的
select length(ename), ename from emp where length(ename)=5;
trim會去首尾空格,不會去除中間的空格。
取得工作崗位為manager的所有員工
select * from emp where job=trim(upper('manager ?'));
● 查詢1981-02-20入職的員工(第一種方法,與數據庫的格式匹配上)
select * from emp where HIREDATE='1981-02-20';
● 查詢1981-02-20入職的員工(第二種方法,將字符串轉換成date類型)
select * from emp where HIREDATE=str_to_date('1981-02-20','%Y-%m-%d');
select * from emp where HIREDATE=str_to_date('02-20-1981','%m-%d-%Y');
str_to_date可以將字符串轉換成日期,具體格式str_to_date (字符串,匹配格式)
查詢1981-02-20以后入職的員工,將入職日期格式化成yyyy-mm-dd hh:mm:ss
select empno, ename, date_format(hiredate, '%Y-%m-%d %H:%i:%s') as hiredate from emp;
select date_format(now(),'%Y-%m-%d %H %i %s');
now() 獲得當前時間
日期格式的說明
%Y:代表4位的年份
%y:代表2位的年份
%m:代表月, 格式為(01……12) ?
%c:代表月, 格式為(1……12)
%H:代表小時,格式為(00……23) ?
%h:代表小時,格式為(01……12) ?
?
%i:代表分鐘, 格式為(00……59)?
%r:代表時間,格式為12 小時(hh:mm:ss [AP]M) ?
%T:代表時間,格式為24 小時(hh:mm:ss)?
%S:代表秒,格式為(00……59) ?
%s:代表秒,格式為(00……59)?
format
● 查詢員工薪水加入千分位
select empno, ename, Format(sal, 0) from emp;
● 查詢員工薪水加入千分位和保留兩位小數
select empno, ename, Format(sal, 2) from emp;
四舍五入
select round(123.56);
生成隨機數
select rand();
隨機抽取記錄數
select * from emp order by rand() limit 2;
order by 必須寫上。
case … when … then …..else …end
如果job為MANAGERG薪水上漲10%,如果job為SALESMAN工資上漲50%
select empno, ename, job, sal, case?job when?'MANAGER' then?sal*1.1 when?'SALESMAN'?then?sal*1.5 end?as newsal from emp;
其他的工資不動,需要添加else
select e.*,sal ,case job when 'salesman' then sal*1.1 when 'clerk' then sal*1.2 else sal end as new_sal from emp e;
e.*:取emp表所有的字段 , emp as e 是表的別名可以省略as emp e
select ifnull(comm,0) from emp;
如果comm為null 就替換為 0
在SQL語句當中若有NULL值參與數學運算,計算結果一定是NULL
為了防止計算結果出現NULL,建議先使用ifnull空值處理函數預先處理。
以下SQL是計算年薪的:
select empno,ename,sal,(sal+ifnull(comm,0))*12 as yearsal from emp;
數據處理函數又被稱為單行處理函數,特點:輸入一行輸出一行