1. 程式人生 > 其它 >MySQL-常見函式

MySQL-常見函式

常見函式

length()

concat 拼接字串

upper(大寫)、lower(小寫)

案例:將姓變大寫,名變小寫,然後拼接

select concat(upper(last_name),'_',lower(first_name)) 姓名
from employees;

substr、substring

#substr、substring
注意:索引從1開始
#哉取從指定索引處後面所有字元
SELECT SUBSTR('李莫愁愛上了陸展元',7) out_put;
#擷取從指定索引處指定字元長度的字元
SELect SUBSTR('李莫愁愛上了陸展元',1,3) out_put;

案例:姓名中首字元大寫,其他字元小寫然後用_拼接,顯示出來

#案例:姓名中首字元大寫,其他字元小寫然後用_拼接,顯示出來
SELECT
         CONCAT(UPPER(SUBSTR(last_name,1,1)),'_',LOWER(SUBSTR(last_name,2))) out_put
FROM 
     employees;

instr返回子串第一次出現的索引,如果找不到返回0

#5.instr返回子串第一次出現的索引,如果找不到返回0
SELECT INSTR('楊不殷六俠悔愛上了殷六俠','殷六俠') AS out_put;

trim 去前後空格

#trim 去前後空格
SELECT LENGTH(TRIM('   張催生   ')) AS out_put;

SELECT TRIM('a' FROM   'aaaaaaaa張aaaaaaa催生aaaa') AS out_put;

lpad用指定的字元實現左填充指定長度

#lpad用指定的字元實現左填充指定長度

SELECT LPAD('殷紊素',10,'*') AS out_put;
SELECT LPAD('殷紊素',2,'*') AS out_put;

rpad用指定的字元實現右填充指定長度

#rpad用指定的字元實現右填充指定長度

SELECT RPAD('殷紊素',12,'ab') AS out_put;

relpace 替換

#relpace 替換

SELECT REPLACE('張無忌愛上了周芷若','周芷若','趙敏') AS out_put;

數學函式

round四捨五入

ceil 向上取整,返回>=該引數的最小整數

floor 向下取整,返回<=該引數的最大整數

truncate 截斷

mod 取餘

日期函式

查詢入職時間的年

SELECT
       YEAR(`hiredate`) 年 
FROM 
     employees;

日期格式的符號

str_to_date 將字元通過指定的格式轉換成日期

#str_to_date 將字元通過指定的格式轉換成日期
SELECT STR_TO_DATE('1999-3-2','%Y-%c-%d') AS out_put;

查詢入職日期為1992-4-3的員工資訊

#查詢入職日期為1992-4-3的員工資訊
select * from employees where hiredate='1992-4-3'

select * from employees where hiredate=str_to_date('4-3 1992','%c-%d %Y');

date_format 將日期轉成字元

#date_format 將日期轉成字元
SELECT DATE_FORMAT(NOW(),'%y年%m月%d日') AS out_put;

查詢有獎金的員工名和入職日期(xx月/xx日 xx年)

#查詢有獎金的員工名和入職日期(xx月/xx日 xx年)
SELECT last_name,DATE_FORMAT(hiredate,'%m月/%d日 %y年') 入職日期
FROM employees
WHERE `commission_pct` IS NOT NULL;

其他函式

流程控制函式

1.if函式: if else的效果

SELECT IF(10<5,'大','小') 
如果成立則 大 不成立則 小
SELECT last_name,commission_pct,IF(commission_pct IS NULL,'沒獎金','有獎金') 備註
FROM employees;

case函式的使用一:switch case的效果

案例:查詢員工的工資,要求,部門號=30,顯示的工資為1.1倍,部門號=40,顯示的工資為1.2倍,部門號=50,顯示的工資為1.3倍,其他部門,顯示的工資為原工資

select salary 原始工資,department_id,
case department_id
when 30 then 1.1*salary
when 40 then 1.2*salary
when 50 then 1.3*salary
else salary
end as 新工資
from employees;

case函式的使用二:類似於 多重if

案例:查詢員工的工資的情況,如果工資>20000,顯示A級別,如果工資>15000,顯示B級別,如果工資>10000,顯示c級別,否則,顯示D級別

select `salary`,
case
when `salary`>20000 then 'A'    
WHEN `salary`>15000 THEN 'B'   
WHEN `salary`>10000 THEN 'C'   
else 'D'
end as 工資級別
FROM employees;

總結:常見函式

習題講解