SQL --函數

這一章節主要談談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的函數部分介紹完畢。

相關文章
相關標籤/搜索