MySQL常用函數(shù),必須推薦!
作者:??蔡不菜丶
juejin.im/post/5ed3b3fb6fb9a047ed240575
概念:
相當(dāng)于java中的方法,將一組邏輯語句封裝在方法體中,對外暴露方法名
隱藏了實現(xiàn)細(xì)節(jié)? ?
提高代碼的可重用性
使用:
select 函數(shù)名(實參列表)【from 表】 ? ?【】中內(nèi)容可省略
正文:
字符函數(shù):
length:獲取字節(jié)個數(shù)(utf-8 一個漢字為3個字節(jié),gbk為2個字節(jié))
SELECT?LENGTH('cbuc')????#?輸出?4
SELECT?LENGTH('蔡不菜cbuc')???#?輸出13
concat:拼接字符串
SELECT?CONCAT('C','_','BUC')???#?輸出?C_BUC
upper:將字母變成大寫
SELECT?UPPER('cbuc')????#?輸出?CBUC
lower:將字母變成小寫
SELECT?LOWER('CBUC')???#?輸出?cbuc
substr / substring:裁剪字符串
該方法進行了重構(gòu),

substr(str,pos)???????#?str:要裁剪的字符串?,?pos:要裁剪的長度
substr(str,pos,len)???#?str:要裁剪的字符串?,?pos/len:從哪個位置開始裁剪幾位
#?substring同理
instr:返回子串第一次出現(xiàn)的索引,如果沒有則返回0
SELECT?INSTR('蔡不菜','蔡')????????#?輸出?1?(mysql是從1開始算位數(shù))
trim:字符串去【字符】
SELECT?TRIM('??cbuc??')?????????????????#?輸出?cbuc
SELECT?TRIM('a'?from?'aaaacbucaaaa')????#輸出?cbuc
lpad:用指定字符實現(xiàn)左填充指定長度
SELECT?LPAD('cbuc',6,'*')????????????#?輸出?**cbuc
rpad:用指定字符實現(xiàn)右填充指定長度
SELECT?RPAD('cbuc',6,'*')????????????#?輸出?cbuc**
replace 替換
SELECT?REPLACE('小菜愛睡覺','睡覺','吃飯')????????#?輸出?小菜愛吃飯
數(shù)學(xué)函數(shù)
round:四舍五入
SELECT?round(1.5)????????#?輸出??2
SELECT?round(-1.5)????????#?輸出?-2 該四舍五入計算方式為:絕對值四舍五入加負(fù)號
ceil:向上取整,返回>=該參數(shù)的最小整數(shù)
SELECT?CEIL(1.5);????????#?輸出??2
SELECT?CEIL(-1.5);????????#?輸出?-1
floor:向下取整,返回<=該參數(shù)的最大整數(shù)
SELECT?FLOOR(1.5);????????#?輸出??1
SELECT?FLOOR(-1.5);????????#?輸出?-2
truncate:截斷
SELECT?TRUNCATE(3.1415926,2);????????#?輸出?3.14
mod:取余
SELECT?MOD(10,3);????????#?輸出?1
SELECT?MOD(10,-3);????????#?輸出?1
日期函數(shù)
now:返回當(dāng)前系統(tǒng)日期+時間
SELECT?NOW()???????????????#?輸出?2020-02-16?11:43:21
curdate:返回當(dāng)前系統(tǒng)日期,不包含時間
SELECT?CURDATE()????????#?輸出?2020-02-16
curtime:返回當(dāng)前時間,不包含日期
SELECT?CURTIME()????????#?輸出?11:45:35
year/month/day 可以獲取指定的部分,年、月、日、小時、分鐘、秒
SELECT?YEAR(NOW())????????#?輸出?2020???其他用法一致
str_to_date:將字符通過指定的格式轉(zhuǎn)換成日期
SELECT?STR_TO_DATE('02-17?2020','%c-%d?%Y')??????#?輸出?2020-02-17
date_format:將日期轉(zhuǎn)換成字符
SELECT?DATE_FORMAT(NOW(),'%Y年%m月%d日')????????#?輸出?2020年02月17日
datediff:兩個日期天數(shù)之差
SELECT?DATEDIFF(NOW(),'2020-02-12')???????????#?輸出????5
其他函數(shù)
VERSION:查看mysql 版本
SELECT?VERSION();???????????#?輸出?5.7.17
DATABASE:查看當(dāng)前數(shù)據(jù)庫
SELECT?DATABASE()??????????#?輸出?cbuc_datebase
USER:查看當(dāng)前用戶
SELECT?USER()???????????????#?輸出?root@localhost
流程控制函數(shù)
if 函數(shù):類似三目運算
SELECT?IF(10<5,'大','小')????????#?輸出?小
switch case 的效果
case?要判斷的字段或表達式
when?常量1?then?要顯示的值1或語句1;
when?常量2?then?要顯示的值2或語句2;
...
else?要顯示的值n或語句n;
end
類似于多重if
case?
when?條件1?then?要顯示的值1或語句1
when?條件2?then?要顯示的值2或語句2
...
else?要顯示的值n或語句n
end
