這一章節主要談談SQL經常使用函數mysql
1、求餘函數MOD(x,y)
算法
MOD(x,y) 返回x被y除後的餘數,MOD()對於帶有小數部分的數值也起做用,它返回除數後的精確餘數。sql
例子數據庫
1.被除數和除數都是整數
服務器
2.被除數或者除數帶有相同位數小數
網絡
3.被除數和除數帶有不一樣位數小數,返回小數位數以除數爲準函數
2、四捨五入函數ROUND(x,y) 和 截取小數點後n位函數TRUNCATE(x,y)編碼
TRUNCATE(x,y) 返回被捨去至小數點後y位的數字x;若y的值爲0,則結果不帶小數部分。加密
1.小數點後0位
code
2.小數點後1位
ROUND(x,y) 返回被捨去至小數點後y位的數字x,x會四捨五入;若y的值爲0,則結果不帶小數部分,結果仍是會四捨五入。
1.不帶小數的四捨五入,四舍
2.不帶小數的四捨五入,五入
3.帶一位小數的五入
備註:8.36帶一位小數四捨五入,0.06>=0.05,因此五入。
4.帶一位小數的四舍
3、十六進制函數HEX(N_or_S)與反十六進制函數UNHEX(str)
1.對字符串進行十六進制編碼
2.對十六進制進行反碼
4、字符串函數
1.CHAR_LENGTH(str) 返回字符串str所包含的字符個數。
2.CONCAT(str1,str2,...) 字符串拼接函數
3.字符串替換函數 INSERT (str,pos,len,newstr)
將字符串str中pos位置(從1開始計算)開始,長度爲len的字符串用newstr代替
4.字符串代替函數 REPLACE(str,from_str,to_str)
REPLACE(源字符串,須要替換的字符串,替換成的值)
5.字符串填充函數 LPAD(str,len,padstr) 和 RPAD(str,len,padstr)
LPAD(源字符串,填充後字符串總長度,填充字符串),padstr填充到str的左邊去,若是str的個數大於len,則返回拼接後len長度字符串。
RPAD(str,len,padstr),即向右拼接字符串
6.刪除空格(或指定字符)的函數 TRIM([remstr FROM] str)
TRIM(str) 刪除字符串str兩側的空格,字符串中間的空格不能刪除。
//不能刪除字符串中間的空格
TRIM('removeStr' FROM str) 刪除str中前面或者後面爲removeStr的字符串,中間的不能刪除,默認時刪除空格。
7.重複生成字符串函數 REPEAT (str,count)
REPEAT (須要重複的字符串,重複次數)
8.字符串比較大小函數 STRCMP(expr1,expr2)
5、日期和時間函數
1.獲取當期日期和當前時間的函數
如上都是獲取日期和時間的函數,我經常使用的是 sysdate。
2.以下都是時間函數
#查詢年 SELECT YEAR(SYSDATE()); #查詢月份數字 SELECT MONTH(SYSDATE()); #查詢月份英文 SELECT MONTHNAME(SYSDATE()); #查詢的是幾號 SELECT DAY(SYSDATE()); #查詢的是星期 SELECT DAYNAME(SYSDATE()); #查詢如今的小時 SELECT HOUR(SYSDATE()) #查詢如今的分鐘 SELECT MINUTE(SYSDATE()); #查詢如今的秒數 SELECT SECOND(SYSDATE()); #時間轉換爲秒鐘 SELECT TIME_TO_SEC(SYSDATE()); #秒鐘轉換爲時間 SELECT SEC_TO_TIME(65393) #日期格式化 http://www.w3school.com.cn/sql/func_date_format.asp SELECT DATE_FORMAT(SYSDATE(),'%Y%m%d') #時間格式化 SELECT TIME_FORMAT(SYSDATE(),'%H%i%s')
6、條件判斷函數
經常使用的條件判斷函數有if、ifnull、case
1.IF(expr1,expr2,expr3)函數,若是表達式expr1是true,則F()返回值爲expr2;不然返回表達式expr3。
2.IFNULL(expr1,expr2)函數,若是expr1不爲null,則f()返回值爲expr1;不然返回expr2。
3.case函數
case when expr1 then value1 else value2 end
當expr1成立時,結果爲value1;不然結果爲value2
7、信息系統函數
1.獲取mysql版本號
2.獲取mysql服務器的鏈接次數
備註:該返回值爲到如今爲止mysql服務器的鏈接次數,每一個鏈接都有本身惟一的ID。
3.查詢數據庫名稱
8、加密函數
1.PASSWORD(str)
password加密後的數據長度是41位,且以*開頭,可用select length(password('lixianli'))察看。password函數加密不可逆。它主要用於密碼加密。可是這種生成密碼的方法依賴數據庫,並且須要鏈接數據庫,有網絡開銷。一般還用MD5的方法 作明碼的加密。
2.MD5(str)
MD5爲字符串計算出一個128比特校驗和。該值以32位十六進制的二進制字符串形式返回。此加密算法不可逆。其實md5算法是信息摘要算法,若是拿來作壓縮也是有損壓縮,理論上即便有反向算法也沒法恢復信息原樣。他常被用來檢驗下載數據的完整性。如好多軟件都提供md5碼,供用戶下載完畢校驗完整性。
3.加密和解密函數
ENCODE(str,pass_str) 和 DECODE(crypt_str,pass_str)
ENCODE(str,pass_str) 使用pass_str做爲密碼,加密str。加密結果是二進制數,須要使用BLOB類型的字段保存。
DECODE(crypt_str,pass_str) 使用pass_str做爲密碼,解密crypt_str。解密結果就是通過encode加密以前的str。
4.格式化函數
FORMAT(X,D) 將數字x格式化,並以四捨五入的方式保留小數點後n位。
5.不一樣進制的數字轉換函數
CONV(N,from_base,to_base) n爲須要轉換的數,from_base爲源轉換進制,to_base爲目的轉換進制。
6.返回不一樣的進制
7.IP地址與數字相互轉換函數
如上,當要存儲ip到數據庫時,能夠現將其轉換成數字,再存入數據庫,取出來的時候,能夠再轉換成ip。
8.重複執行指定操做的函數 BENCHMARK(count,expr)
該函數重複count次執行表達式expr,它經常使用於計算MYSQL處理表達式的速度。
結果值一般爲0,0表示處理速度很快。
舉例子說明
由上能夠看出,PASSWORD('lixianli & panda')被執行0次的時間是0.000s;被執行10000次的時間是0.016s。
自此,mysql的函數部分介紹完畢。