MYSQL常用函數(shù)_第1頁(yè)
MYSQL常用函數(shù)_第2頁(yè)
MYSQL常用函數(shù)_第3頁(yè)
MYSQL常用函數(shù)_第4頁(yè)
MYSQL常用函數(shù)_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、MYSQL常用函數(shù)1 數(shù)學(xué)函數(shù)1) ABS(x) 返回x的絕對(duì)值2) BIN(x)返回x的二進(jìn)制(OCT返回八進(jìn)制,HEX返回十六進(jìn)制)3) CEILING(x) 返回大于x的最小整數(shù)值4) EXP(x)返回值e(自然對(duì)數(shù)的底)的x次方5) FLOOR(x)返回小于x的最大整數(shù)值6) GREATEST(x1,x2,.,xn)返回集合中最大的值7) LEAST(x1,x2,.,xn) 返回集合中最小的值8) LN(x) 返回x的自然對(duì)數(shù)9) LOG(x,y)返回x的以y為底的對(duì)數(shù)10) MOD(x,y) 返回x/y的模(余數(shù))11) PI()返回pi的值(圓周率)12) RAND()返回到內(nèi)的隨

2、機(jī)值,可以通過(guò)提供一個(gè)參數(shù)(種子)使RAND()隨機(jī)數(shù)生成器生成一個(gè)指定的值。13) ROUND(x,y)返回參數(shù)x的四舍五入的有y位小數(shù)的值14) SIGN(x) 返回代表數(shù)字x的符號(hào)的值15) SQRT(x) 返回一個(gè)數(shù)的平方根16) TRUNCATE(x,y) 返回?cái)?shù)字x截短為y位小數(shù)的結(jié)果2 聚合函數(shù)1) AVG(col)返回指定列的平均值2) COUNT(col)返回指定列中非NULL值的個(gè)數(shù)3) MIN(col)返回指定列的最小值4) MAX(col)返回指定列的最大值5) SUM(col)返回指定列的所有值之和6) GROUP_CONCAT(col) 返回由屬于一組的列值連接組合

3、而成的結(jié)果3 字符串函數(shù)1) ASCII(char)返回字符的ASCII碼值2) BIT_LENGTH(str)返回字符串的比特長(zhǎng)度3) CONCAT(s1,s2.,sn)將s1,s2.,sn連接成字符串4) CONCAT_WS(sep,s1,s2.,sn)將s1,s2.,sn連接成字符串,并用sep字符間隔5) INSERT(str,x,y,instr) 將字符串str從第x位置開(kāi)始,y個(gè)字符長(zhǎng)的子串替換為字符串instr,返回結(jié)果6) FIND_IN_SET(str,list)分析逗號(hào)分隔的list列表,如果發(fā)現(xiàn)str,返回str在list中的位置7) LCASE(str)或LOWER(s

4、tr) 返回將字符串str中所有字符改變?yōu)樾?xiě)后的結(jié)果8) LEFT(str,x)返回字符串str中最左邊的x個(gè)字符9) LENGTH(s)返回字符串str中的字符數(shù)10) LTRIM(str) 從字符串str中切掉開(kāi)頭的空格11) POSITION(substr,str) 返回子串substr在字符串str中第一次出現(xiàn)的位置12) QUOTE(str) 用反斜杠轉(zhuǎn)義str中的單引號(hào)13) REPEAT(str,srchstr,rplcstr)返回字符串str重復(fù)x次的結(jié)果14) REVERSE(str) 返回顛倒字符串str的結(jié)果15) RIGHT(str,x) 返回字符串str中最右邊的x

5、個(gè)字符16) RTRIM(str) 返回字符串str尾部的空格17) STRCMP(s1,s2)比較字符串s1和s218) TRIM(str)去除字符串首部和尾部的所有空格19) UCASE(str)或UPPER(str) 返回將字符串str中所有字符轉(zhuǎn)變?yōu)榇髮?xiě)后的結(jié)果4 日期和時(shí)間函數(shù)1) CURDATE()或CURRENT_DATE() 返回當(dāng)前的日期2) CURTIME()或CURRENT_TIME() 返回當(dāng)前的時(shí)間3) DATE_ADD(date,INTERVAL int keyword) 返回日期date加上間隔時(shí)間int的結(jié)果(int必須按照關(guān)鍵字進(jìn)行格式化),如:SELECT

6、DATE_ADD(CURRENT_DATE,INTERVAL 6 MONTH);4) DATE_FORMAT(date,fmt) 依照指定的fmt格式格式化日期date值5) DATE_SUB(date,INTERVAL int keyword) 返回日期date加上間隔時(shí)間int的結(jié)果(int必須按照關(guān)鍵字進(jìn)行格式化),如:SELECT DATE_SUB(CURRENT_DATE,INTERVAL 6 MONTH);6) DAYOFWEEK(date) 返回date所代表的一星期中的第幾天(17)7) DAYOFMONTH(date) 返回date是一個(gè)月的第幾天(131)8) DAYOFY

7、EAR(date) 返回date是一年的第幾天(1366)9) DAYNAME(date) 返回date的星期名,如:SELECT DAYNAME(CURRENT_DATE);10) FROM_UNIXTIME(ts,fmt) 根據(jù)指定的fmt格式,格式化UNIX時(shí)間戳ts11) HOUR(time) 返回time的小時(shí)值(023)12) MINUTE(time) 返回time的分鐘值(059)13) MONTH(date) 返回date的月份值(112)14) MONTHNAME(date) 返回date的月份名,如:SELECT MONTHNAME(CURRENT_DATE);15) NO

8、W() 返回當(dāng)前的日期和時(shí)間16) QUARTER(date) 返回date在一年中的季度(14),如SELECT QUARTER(CURRENT_DATE);17) WEEK(date) 返回日期date為一年中第幾周(053)18) YEAR(date) 返回日期date的年份(10009999)示例:獲取當(dāng)前系統(tǒng)時(shí)間:SELECT FROM_UNIXTIME(UNIX_TIMESTAMP();SELECT EXTRACT(YEAR_MONTH FROM CURRENT_DATE);SELECT EXTRACT(DAY_SECOND FROM CURRENT_DATE);SELECT EX

9、TRACT(HOUR_MINUTE FROM CURRENT_DATE);返回兩個(gè)日期值之間的差值(月數(shù)):SELECT PERIOD_DIFF(200302,199802);在Mysql中計(jì)算年齡:SELECT DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW()-TO_DAYS(birthday), '%Y')+0 AS age FROM employee;這樣,如果Brithday是未來(lái)的年月日的話,計(jì)算結(jié)果為0。下面的SQL語(yǔ)句計(jì)算員工的絕對(duì)年齡,即當(dāng)Birthday是未來(lái)的日期時(shí),將得到負(fù)值。SELECT DATE_FORMAT(NOW(), 

10、9;%Y') - DATE_FORMAT(birthday, '%Y') - (DATE_FORMAT(NOW(), '00-%m-%d') < DATE_FORMAT(birthday, '00-%m-%d') AS age from employee5加密函數(shù)1) AES_ENCRYPT(str,key) 返回用密鑰key對(duì)字符串str利用高級(jí)加密標(biāo)準(zhǔn)算法加密后的結(jié)果,調(diào)用AES_ENCRYPT的結(jié)果是一個(gè)二進(jìn)制字符串,以BLOB類型存儲(chǔ)2) AES_DECRYPT(str,key) 返回用密鑰key對(duì)字符串str利用高級(jí)加密標(biāo)

11、準(zhǔn)算法解密后的結(jié)果3) DECODE(str,key) 使用key作為密鑰解密加密字符串str4) ENCRYPT(str,salt) 使用UNIX crypt()函數(shù),用關(guān)鍵詞salt(一個(gè)可以惟一確定口令的字符串,就像鑰匙一樣)加密字符串str5) ENCODE(str,key) 使用key作為密鑰加密字符串str,調(diào)用ENCODE()的結(jié)果是一個(gè)二進(jìn)制字符串,它以BLOB類型存儲(chǔ)6) MD5() 計(jì)算字符串str的MD5校驗(yàn)和7) PASSWORD(str) 返回字符串str的加密版本,這個(gè)加密過(guò)程是不可逆轉(zhuǎn)的,和UNIX密碼加密過(guò)程使用不同的算法。8) SHA() 計(jì)算字符串str的安

12、全散列算法(SHA)校驗(yàn)和示例:SELECT ENCRYPT('root','salt');SELECT ENCODE('xufeng','key');SELECT DECODE(ENCODE('xufeng','key'),'key');#加解密放在一起SELECT AES_ENCRYPT('root','key');SELECT AES_DECRYPT(AES_ENCRYPT('root','key'),'k

13、ey');SELECT MD5('123456');SELECT SHA('123456');6控制流函數(shù)MySQL有4個(gè)函數(shù)是用來(lái)進(jìn)行條件操作的,這些函數(shù)可以實(shí)現(xiàn)SQL的條件邏輯,允許開(kāi)發(fā)者將一些應(yīng)用程序業(yè)務(wù)邏輯轉(zhuǎn)換到數(shù)據(jù)庫(kù)后臺(tái)。MySQL控制流函數(shù):1) CASE WHENtest1 THEN result1.ELSE default END 如果testN是真,則返回resultN,否則返回default2) CASE test WHENval1 THEN result.ELSE default END 如果test和valN相等,則返回resul

14、tN,否則返回default3) IF(test,t,f) 如果test是真,返回t;否則返回 f4) IFNULL(arg1,arg2) 如果arg1不是空,返回arg1,否則返回arg25) NULLIF(arg1,arg2) 如果arg1=arg2返回NULL;否則返回arg1這些函數(shù)的第一個(gè)是IFNULL(),它有兩個(gè)參數(shù),并且對(duì)第一個(gè)參數(shù)進(jìn)行判斷。如果第一個(gè)參數(shù)不是NULL,函數(shù)就會(huì)向調(diào)用者返回第一個(gè)參數(shù);如果是NULL,將返回第二個(gè)參數(shù)。如:SELECT IFNULL(1,2), IFNULL(NULL,10), IFNULL(4*NULL,'false');

15、16;NULLIF()函數(shù)將會(huì)檢驗(yàn)提供的兩個(gè)參數(shù)是否相等,如果相等,則返回NULL,如果不相等,就返回第一個(gè)參數(shù)。如:SELECT NULLIF(1,1),NULLIF('A','B'),NULLIF(2+3,4+1);Ø和許多腳本語(yǔ)言提供的IF()函數(shù)一樣,MySQL的IF()函數(shù)也可以建立一個(gè)簡(jiǎn)單的條件測(cè)試,這個(gè)函數(shù)有三個(gè)參數(shù),第一個(gè)是要被判斷的表達(dá)式,如果表達(dá)式為真,IF()將會(huì)返回第二個(gè)參數(shù),如果為假,IF()將會(huì)返回第三個(gè)參數(shù)。如:SELECT IF(1<10,2,3),IF(56>100,'true','

16、false');ØIF()函數(shù)在只有兩種可能結(jié)果時(shí)才適合使用。然而,在現(xiàn)實(shí)世界中,我們可能發(fā)現(xiàn)在條件測(cè)試中會(huì)需要多個(gè)分支。在這種情況下,MySQL提供了CASE函數(shù),它和PHP及Perl語(yǔ)言的switch-case條件例程一樣。CASE函數(shù)的格式有些復(fù)雜,通常如下所示:CASE expression to be evaluatedWHEN val 1 THEN result 1WHEN val 2 THEN result 2WHEN val 3 THEN result 3.WHEN val n THEN result nELSE default resultEND這里,第一個(gè)

17、參數(shù)是要被判斷的值或表達(dá)式,接下來(lái)的是一系列的WHEN-THEN塊,每一塊的第一個(gè)參數(shù)指定要比較的值,如果為真,就返回結(jié)果。所有的 WHEN-THEN塊將以ELSE塊結(jié)束,當(dāng)END結(jié)束了所有外部的CASE塊時(shí),如果前面的每一個(gè)塊都不匹配就會(huì)返回ELSE塊指定的默認(rèn)結(jié)果。如果沒(méi) 有指定ELSE塊,而且所有的WHEN-THEN比較都不是真,MySQL將會(huì)返回NULL。CASE函數(shù)還有另外一種句法,有時(shí)使用起來(lái)非常方便,如下:CASEWHEN conditional test 1 THEN result 1WHEN conditional test 2 THEN result 2ELSE defau

18、lt resultEND這種條件下,返回的結(jié)果取決于相應(yīng)的條件測(cè)試是否為真。示例:mysql>SELECT CASE 'green' WHEN 'red' THEN 'stop' WHEN 'green' THEN 'go' END;SELECT CASE 9 WHEN 1 THEN 'a' WHEN 2 THEN 'b' ELSE 'N/A' END;SELECT CASE WHEN (2+2)=4 THEN 'OK' WHEN (2+2)&l

19、t;>4 THEN 'not OK' END AS STATUS;SELECT Name,IF(IsActive = 1),'已激活','未激活') AS RESULT FROM UserLoginInfo;SELECT fname,lname,(math+sci+lit) AS total,CASE WHEN (math+sci+lit) < 50 THEN 'D'WHEN (math+sci+lit) BETWEEN 50 AND 150 THEN 'C'WHEN (math+sci+lit) BE

20、TWEEN 151 AND 250 THEN 'B'ELSE 'A' END AS grade FROM marks;ØSELECT IF(ENCRYPT('sue','ts')=upass,'allow','deny') AS LoginResult FROM users WHERE uname = 'sue'#一個(gè)登陸驗(yàn)證7格式化函數(shù)1) DATE_FORMAT(date,fmt) 依照字符串fmt格式化日期date值2) FORMAT(x,y) 把x格式化為以逗號(hào)隔開(kāi)

21、的數(shù)字序列,y是結(jié)果的小數(shù)位數(shù)3) INET_ATON(ip) 返回IP地址的數(shù)字表示4) INET_NTOA(num) 返回?cái)?shù)字所代表的IP地址5) TIME_FORMAT(time,fmt) 依照字符串fmt格式化時(shí)間time值6) 其中最簡(jiǎn)單的是FORMAT()函數(shù),它可以把大的數(shù)值格式化為以逗號(hào)間隔的易讀的序列。示例:SELECT FORMAT(34234.34323432,3);SELECT DATE_FORMAT(NOW(),'%W,%D %M %Y %r');SELECT DATE_FORMAT(NOW(),'%Y-%m-%d');SELECT DATE_F

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論