標籤:
豐富的函數可以簡化使用者的操作,讓操作更加靈活,此外,由於函數的執行速度非常快,還可以提高MySQL的處理速度。
前面介紹到的Select語句及其條件運算式,Insert、Update和Delete語句及其條件運算式都可以使用這些函數。
MySQL函數包括數學函數、字串函數、日期和時間函數、條件判斷函數、徐彤資訊函數、加密函數、格式化函數等。下面將詳細介紹這些函數的使用方法。
1、數學函數
數學函數主要用於處理數字,包括整型、浮點型等。
2、字串函數
字串函數主要用於處理表中的字串。
(1)假設利用函數LPAD(‘Jiangjing’,15,’+-‘)來將字串’+-‘填充到’Jiangjing’開始處,使得字串長度達到15,則結果為’+-+-+Jiangjing’。
(2)假設利用函數TRIM(‘ab’ from ‘ababdddababdddab’)來去掉字串’ababdddababdddab’中首尾的’ab’,將得到’dddababddd’。
(3)假設利用Make_set(11,’a’,’b’,’c’,’d’)函數選取字串,首先11轉換成為進位數1011,由於讀取位元的順序是從右至左,因此,表示從右至左的第1位、第2位和第4位為1,所以對應選取’a’,’b’和’d’。一定注意順序。
3、日期和時間函數
其中,MySQL的日期間隔類型如下
MySQL中的日期時間格式如下
4、條件判斷函數
條件判斷函數用來在SQL語句中進行條件判斷。
4.1 IF(expr,v1,v2)函數
如果運算式expr成立,返回結果v1,否則返回結果v2。
4.2 IFNULL(v1,v2)函數
如果v1不為空白,就顯示v1的值,否則就顯示v2的值。
4.3 CASE函數
(1)CASE WHEN exp1 Then v1 [WHEN expr2 THEN v2 ···] [ELSE vn] END
類似於If else語句
(2)CASE expr WHEN e1 Then v1 [WHEN e2 THEN v2 ···] [ELSE vn] END
類似於Case語句
5、系統資訊函數
系統資訊函數用來查詢MySQL資料庫的系統資訊。
6、加密函數
加密函數時MySQL用來對資料進行加密的函數。
6.1 加密函數PASSWORD(str)
通常用來給使用者的密碼加密。
注意password()函數的加密是無法復原的。
6.2 加密函數MD5(str)
主要用來對普通的資料加密。
6.3 加密函數ENCODE(str,pswd_str)
可以使用字串pswd_str來加密字串str,加密的結果是一個位元,必須使用BLOB類型的欄位來儲存。
6.4 解密函數DECODE(crypt_str,pswd_str)
可以使用字串pswd_str來為crypt_str解密,其中crypt_str是通過6.3函數加密的,注意字串pswd_str應該與加密時的字串pswd_str是相同的。
7、 其它函數7.1 格式化函數Format(x,n)
可以將數字x進行格式化,將其保留到小數點後n位,這個過程會進行四捨五入。
與函數ROUND(x,y)類似。
7.2 不同進位的數字進行轉換的函數
(1)ASCII(s)返回字串s的第一個字元的ASCII碼
(2)BIN(x)返回x的二進位編碼
(3)HEX(x)返回x的十六進位編碼
(4)OCT(x)返回x的八進位編碼
(5)CONV(x,f1,f2)將x從f1進位數變換成f2進位數
7.3 IP地址與數字相互轉換的函數
(1)INET_ATON(IP)可以將IP地址轉換成數字表示
(2)INET_NTOA(n)可以將數字n轉成IP的形式
注意INET_ATON(IP)函數中IP值需要加上引號。
7.4 加鎖函數與解鎖函數
(1)GET_LOCT(name,time)定義一個名稱為name、持續持劍長度為time秒的鎖,如果鎖定成功則返回1,如果嘗試逾時則返回0,如果遇到錯誤則返回NULL。
(2)RELEASE_LOCT(name)解除名稱為name的鎖,如果解鎖成功則返回1,如果嘗試逾時則返回0,如果遇到錯誤則返回NULL。
(3)IS_FREE_LOCK(name)判斷是否使用名為name的鎖,如果使用則返回0,否則返回1.
7.5 重複執行指定操作的函數
BENCHMARK(count,expr)將運算式expr重複執行count次,飯後返回執行時間,可用來判斷MySQL處理運算式的速度。
7.6 改變字元集的函數
CONVERT(s USING cs)將字串s的字元集變成cs
7.7 改變欄位資料類型的函數
CAST(x AS type)和CONVERT(x,type)
MySQL 入門(十二)—— MySQL內建函式