MySQL 函式整理
此內容摘自"MySQL5.7從入門到精通"
目錄
1.數學函式
1.1 獲得一個數的絕對值
ABS(num) 返回num的絕對值
1.2 圓周率
PI() 返回圓周率π的值
1.3 平方根
SQRT(num) 返回非負數num的平方根
1.4 求餘
MOD(x,y) 返回x被y除後的餘數
1.5 獲取隨機數
RAND(X) x 為種子生成隨機數,相同的x隨機數都一樣
RAND() 隨機數
2.字串函式
2.1. 計算字串的長度
CHAR_LENGTH(str) 返回的是字串str鎖包含的字元個數
LENGTH(str) 返回的是字串的位元組長度,使用utf8編碼時,一個漢字是三個位元組,一個字母或一個數字算一個位元組
2.2 合併字串
CONCAT(s1,s2,sn..) 返會結果為s1+s2...+sn 的一條字串,只要有一個字串為Null,最後結果就是Null
2.3 替換字串
INSERT(s1,x,len,s2) s1:要被替換(修改)的字串 , x: 從什麼位置開始替換 , len: 替換的長度 , s2: 拿給s1替換的字串,索引(x)從1開始
1. 下面意思就是Quest 從第二個位置開始替換4個長度,替換的是What,結果就是 QWhat
2. -1 低過了Quest的索引,結果直接返回源字串
3. 替換的長度超過了源字串長度,則從第2個開始擷取後面的所有字串
2.4 字母大小寫轉換
LOWER(str) 或 LCASE(str) 都可以把str包含的大寫字母轉為小寫字母
UPPER(str) 或 UCASE(str) 都可以把str包含的小寫字母轉為大寫
2.5獲取指定長度的字串
LEFT(str,len) 返回str的len長度的字串(從左邊開始)
RIGHT(str,len) 返回str的en長度的字串(從右邊開始)
2.6 刪除字串的空格
TRIM(str) 刪除str兩邊的空格
2.7 替換指定字串
REPLACE(s,s1,s2)
2.8 生成n個重複字串
REPEAT(str,num) num指str重複的次數 ,如果num<0 ,則返回空字串, 如果num或者str為null則返回Null
num小於0返回空串
只要有一個為Null就返回null
2.9 比較字串大小
STRCMP(S1,S2) 如果相等返回0, s1>s2 返回 1 ,s1<s2 返回 -1
2.10 字串擷取
SUBSTRING(str,index,len) str:要被擷取的字串, index:從什麼地方開始擷取 , len:擷取的長度
1.把breakfast 從第五個字母開始擷取
2.第五個字母開始擷取.擷取三個長度
3. 擷取後三位長度
4.從倒數第五個位置開始,擷取3位
2.11 字串反轉
REVERSE(str)
2.12 獲取字串使用的編碼
CHARSET()
3.日期和時間函式
3.1 獲得當前日期
CURRENT_DATE() , CURDATE() 作用相同 ,都是返回當前日期,格式為 YYYY-MM-DD
CURRENT_TIME() ,CURTIME() 將當前時間以HH:MM:SS 格式返回
CURRENT_TIMESTAMP() , LOCALTIME() ,NOW() , SYSDATE() 返回YYYY-MM-DD HH:MM:SS格式
3.2 獲取月份
MONTH(date) 返回對應的date月份,範圍值是1-12
MONTHNAME(date) 返回的是對應月份的英文名字
3.3 獲取星期
DAYNAME(date) 返回當前星期的英文名
DAYOFWEEK(date) 返回date在一週中的索引(位置) 1:週日 2:週一 3:週二 4:週三.... 7:週六
WEEK(date) 返回的是date是一年中的第幾周
3.4 獲取天
DAYOFYEAR(d) 返回d 是一年中的第幾天 範圍是1-366
DAYOFMONTH(date) 返回date在一個月中的位置
3.5 獲取年份,小時,分鐘
YEAR(date) 返回date的年份
MINUTE(date) 返回date的分鐘
SECOND(date) 返回date的秒數
3.6 時間和秒鐘轉換
TIME_TO_SEC(time) 將time轉為秒
SEC_TO_TIME(s) 將s轉為分鐘
3.7 計算日期和時間
暫時留白,等我理清了再寫上去
4.條件判斷函式
4.1 IF表示式
IF(expr , v1 ,v2) 如果表示式(expr)為true ,則返回v1 ,false返回v2
4.2 CASE表示式
CASE expre WHEN V1 THEN V11 WHEN V2 THEN V2 ELSE v3 END
如果expre 等於 某個when後面 則返回對應when的結果
5.系統資訊函式
5.1 獲取mysql版本號
VERSION()
5.2 獲取mysql伺服器連線次數
CONNECTION_ID()
SHOW PROCESSLIST;SHOW FULL PROCESSLIST; 檢視當前所有連線
使用另一個cmd連線mysql ,這時候在查詢已經有兩條連線了
5.3獲取使用者名稱
USER(),CURRENT_USER(),SYSTEM)USER(); 一般情況下這些函式的作用都相同
root為使用者名稱 localhost為登入的主機名
5.4獲取最後一個生成的id數
LAST_INSERT_ID()
6.加密/解密函式
6.1 PASSWORD 加密
PASSWORD(str) 返回加密後的str ,如果str為NULL則返回空串
6.2 MD5 加密
MD5(str) 為字串算出一個MD5 128位元校驗和,該值已32位十六進位制數字的二進位制字串形式返回,若引數為null,則返回null
6.3 ENCODE加密/解密
ENCODE(s1,s2) 使用s2加密s1,
DECODE(S1,S2) 使用s2密碼,解密加密後的s1
7.其他函式