MYSQL专用函数

上传人:无*** 文档编号:164350300 上传时间:2022-10-24 格式:DOC 页数:24 大小:326.50KB
返回 下载 相关 举报
MYSQL专用函数_第1页
第1页 / 共24页
MYSQL专用函数_第2页
第2页 / 共24页
MYSQL专用函数_第3页
第3页 / 共24页
点击查看更多>>
资源描述
附錄C MySQL專用函數本章介紹MySQL專用函數,這些函數可插入在 SQL指令內使用,善用這些函數將使得資料處理更具彈性,然而它們有些是MySQL專用函數,因此只適用於MySQL資料庫而不具可攜性。由於這些指令之語法有些非常冗長,有些可搭配使用之參數也非常繁多,所以本書僅就各指令語法與用途簡單說明,詳細格式請讀者參閱MySQL技術手冊。C-1 比較函數與運算子C-1-1 常用比較運算子 = (Equal):等於。回傳值為1(真);0(偽)。 ( NULL-safe):等於,但結果與 = 不完全一致。回傳值為1(真);0(偽)。 , != (Not equal):不等於。回傳值為1(真);0(偽)。 = (Less than or equal):小於等於。回傳值為1(真);0(偽)。 = (Greater than or equal):大於等於。回傳值為1(真);0(偽)。 (Greater than):大於。回傳值為1(真);0(偽)。 IS boolean_value:屬於True, False, 或Null(未知) 。回傳值為1(真);0(偽)。 IS Not boolean_value:不屬於True, False, 或Null(未知) 。回傳值為1(真);0(偽)。 IS Null:屬於虛值。回傳值為1(真);0(偽)。 IS Not Null:不屬於虛值。回傳值為1(真);0(偽)。 expr BETWEEN min AND max:介於min 和 max之間。回傳值為1(真);0(偽)。 expr Not BETWEEN min AND max:不介於min 和 max之間。回傳值為1(真);0(偽)。 GREATEST(value1,value2,.):取最大值。範例:Select GREATEST(8, 7,6,3,9); 回傳值:9。 expr IN (value,.):若expr在(value,.)之集合內則傳回1,否則為0。 expr Not IN (value,.):若expr不在(value,.)之集合內則傳回1,否則為0。 ISNULL(expr):若運算式為虛值則傳回1,否則為0。 INTERVAL(N,N1,N2,N3,.) :N大於後續整數值之順位(N從-1起算),若N比後續值小則傳回0。 LEAST(value1,value2,.) :取小值。範例:Select LEAST(8, 7,6,3,9); 回傳值:3。註:exp表示一道合法之運算式。C-1-2 運算說明(1) 數值及字串比較結果將回傳1 (TRUE),0 (FALSE),或NULL。 若運算式同時包含數值及字串時,必要的話,字串將自動轉型為數值,或數值將自動轉型為字串。 (2) 運算式若包含函數時,例如LEAST()、GREATEST() 等,則回傳值不一定是1 (TRUE), 0 (FALSE), 或 NULL,視傳入之引數而定,其比較規則如下述:l 若兩個引數有一或兩個為NULL時, 則比較結果為NULL,除非是使用(NULL-safe型)等號運算子。 l 若比較運算事中之兩個引數為字串,則以字串作比較。l 若比較運算事中之兩個引數為整數,則以整數作比較。l 十六進位數值資料將以二進位字串而非以數值作比較。l 若其中一個引數為TIMESTAMP或 DATETIME型,另一個為常數,則常數將被轉為TIMESTAMP,但此規則不適用於IN()型式。為了安全起見,儘可能以相同型式之資料作比較。l 其餘型式之引數將使用浮點數(實數)作比較。(3) 字串比較時,將不區分大小寫。(4) 數值資料可用CAST()函數轉型為字串,字串可用CONVERT()函數轉型為其它字元集。C-2 流程控制函數1. Case When Then Else End語法:CASE value WHEN compare-value THEN result WHEN compare-value THEN result . ELSE result END 說明:若compare-value等於value,則傳回對應段Then 之result,否則傳回Else之 result。範例1:SELECT CASE 1 WHEN 1 THEN one WHEN 2 THEN two ELSE more END;結果:one。範例2:SELECT CASE BINARY B WHEN a THEN 1 WHEN b THEN 2 END;結果:NULL。2. Case When Then Else End語法:CASE WHEN condition THEN result WHEN condition THEN result . ELSE result END 說明:若condition為真,則傳回對應段Then 之result,否則傳回Else之 result。範例1:SELECT CASE WHEN 10 THEN true ELSE false END;結果:true。範例2:SELECT CASE BINARY B WHEN a THEN 1 WHEN b THEN 2 END;結果:NULL3. IF語法:IF(expr1, expr2, expr3) 說明:若expr1運算式為真,則傳回expr2,否則傳回expr3。範例1:SELECT IF(12,2,3) ;結果:3。範例2:SELECT IF(STRCMP(test, test1), no, yes) ;結果:no。4. IFNULL語法:IFNULL(expr1,expr2) 說明:若expr1運算式非虛值,則傳回expr1,否則傳回expr2。範例1:SELECT IFNULL(1,0) ;結果:1。範例2:SELECT IFNULL(1/0,10) ;結果:10。C-3 字串函數1. ASCII (str):將str轉成ASCII碼。範例1:SELECT ASCII(2) ;結果:50。範例2:SELECT ASCII(2) ;結果:50。範例3:SELECT ASCII(dx) ;結果:100。2. BIN (N):將數值N 轉成二進制碼,與CONV(N, 10, 2)等效。範例:SELECT BIN(12) ;結果:1100。3. BIT_LENGTH (str):計算str位元數。範例:SELECT BIT_LENGTH (text) ;結果:32。4. CHAR (N,.):將數列N轉成字元組。範例1:SELECT CHAR (77, 121, 83, 81, 76) ;結果:MySQL。範例2:SELECT CHAR (77, 77.3, 77.3) ;結果:MMM。5. CHAR_LENGTH (str):計算str字元數,若為雙位元組字元時,一個字元計數一次。範例1:SELECT CHAR_LENGTH (text) ;結果:4。範例2:SELECT CHAR_LENGTH (資料庫) ;結果:3。範例3:SELECT LENGTH (資料庫) ;結果:6。6. CHARACTER_LENGTH (str):與CHAR_LENGTH函數用法相同。7. COMPRESS (string_to_compress):將string_to_compress字串壓縮,MySQL需要有類似zlib壓縮函數。範例1:SELECT LENGTH(COMPRESS (REPEAT(a, 1000) ;結果:21。範例2:SELECT LENGTH(COMPRESS () ;結果:0。範例3:SELECT LENGTH(COMPRESS (a) ;結果:13。8. CONCAT (str1,str2,.):將第二個及以後字串串接在第一個字串後面。範例1:SELECT CONCAT(M, y, S QL);結果:MySQL。範例2:SELECT CONCAT(My, Null QL); 結果:NULL。範例3:SELECT CONCAT(14.3); 結果:14.3(字串型態)。9. CONCAT_WS (separator,str1,str2,.):將第二個及以後字串串接在第一個字串後面,但是字串間須以separator符號間隔。範例:SELECT CONCAT_ws(, 資, 料, 庫); 結果:資,料,庫。10. CONV (N,from_base,to_base):將數值N從from_base 進制轉成to_base 進制表示,若 to_base為負值則以有號表示,否則以無號表示。範例1:SELECT CONV(a,16,2);結果:1010範例2:SELECT CONV(6E,18,8);結果:172範例3:SELECT CONV(-17,10,-18);結果:-H範例4:SELECT CONV(10+10+10+0xa,10,10);結果:4011. ELT (N,str1,str2,str3,.):以數值N來挑選後續對應之字串。範例1:SELECT ELT(1, MySQL, 資料庫 ); 結果:MySQL。範例2:SELECT ELT(2, MySQL, 資料庫 ); 結果:資料庫。12. FIELD (str,str1,str2,str3,.):以索引鍵str搜尋後續之字串集合位置。範例1:SELECT FIELD(ej, Hej, ej, Heja” ); 結果:2。範例2:SELECT FIELD(fo, Hej, ej, Heja” ); 結果:0。13. FIND_IN_SET (str,strlist):以索引鍵str搜尋後續字串集合之對應位置。範例:SELECT FIELD_IN_SET(b, a,b,c,d ); 結果:2。14. HEX(N_or_S):與CONV(N, 10, 16)用法相同。範例1:SELECT HEX(255 ); 結果:FF。範例2:SELECT HEX(abc ); 結果:616263。範例3:SELECT 0x616263; 結果:abc。15. INSERT(str,pos,len,newstr):以newstr取代str,取代位置從pos開始,長度為len。範例1:SELECT INSERT(Quadratic, 3, 4, What); 結果:QuWhatadratic。範例2:SELECT INSERT(Quadratic, -1, 4, What); 結果:Quadratic。範例3:SELECT INSERT(Quadratic, 3, 100, What); 結果:QuWhat。16. INSTR (str,substr):尋找substr在str之出現起始位置。範例1:SELECT INSTR(foobarbar, bar); 結果:4。範例2:SELECT INSTR(xbar, foobar); 結果:017. LCASE(str):將str轉小寫,與 LOWER()用法相同。18. LEFT (str,len):取出字串左端字元,長度為len。範例:SELECT LEFT(foobar, 4); 結果:foob。19. LENGTH (str):計算字串str之位元數,雙位元字元一個字元計數為2。20. LOAD_FILE (file_name):將聲音或影像檔匯入BLOB欄。範例:Update Test Set Picture = LOAD_FILE(/tmp/picture) Where id=1;檔案須上傳至伺服端並指定完整路徑,若路徑以 “”表示,則須以“”來間隔。21. LOCATE(substr,str) ,LOCATE(substr,str,pos):尋找substr在str之出現位置,若有指定pos,則從起始位置pos開始搜尋。範例1:SELECT LOCATE(bar, foobarara); 結果:4。範例2:SELECT LOCATE(bar, foobarbar,5); 結果:7。22. LOWER (str):將str轉小寫。23. LPAD (str,len,padstr):將padstr貼在str左方, 總長度為len,若str長度大於len,則大於len之右方字元將被剪去。範例1:SELECT LPAD(ba,4, ?); 結果:?hi。範例2:SELECT LPAD(ba,1, ?); 結果:b。24. LTRIM (str):去除左方空白字元。範例1:SELECT LTRIM( bar); 結果:bar。25. MID (str,pos,len):與SUBSTR(str, pos, len) 用法相同。範例:SELECT MID(interesting,6,3); 結果:estr。26. OCT (N):將N轉成八進制表示之數值,N為長整數型態,與CONV(N, 10, 8)等效。範例:SELECT OCT(12); 結果:14。27. ORD (str):若str為多位元組字元,則傳回(1st byte code+2nd byte code*256+3rd byte code*2562)之編碼,若為單位元組字元,則直接傳回ASCII碼。28. POSITION(substr IN str):與LOCATE(substr,str)用法相同。29. QUOTE(str):將str前後加上單引號後再輸出。30. REPEAT (str,n):將str重複輸出n次。範例:SELECT REPEAT(MySQL,2); 結果:MySQLMySQL。31. REPLACE (str,from_str,to_str):將str內之字元from_str以字元to_str取代。範例:SELECT REPLACE(www.nuu.edu.tw,w,Ww); 結果:WwWwWw.nuu.edu.tWw32. REVERSE(str):將str之字元反向輸出。範例:SELECT REVERSE(MySQL); 結果:LQSyM。33. RIGHT (str,len):取右端字元,長度為len。範例:SELECT RIGHT(MySQL,3); 結果:SQL。34. RPAD (str,len,padstr):將padstr貼在str右方, 總長度為len,若str長度大於len,則大於len之右方字元將被剪除。範例1:SELECT RPAD(hi,5, ?); 結果:hi?。範例2:SELECT RPAD(hi,1, ?); 結果:h。35. RTRIM (str):去除右方空白字元。範例:SELECT RITRIM(MySQL ); 結果:MySQL。36. SPACE (N):產生N個空白字元。範例:SELECT SPACE(3); 結果: 。37. SUBSTRING(str,pos),SUBSTRING(str,pos,len):取子字串,從pos開始截取,若有指定len,則取len長度字元。範例:SELECT SUBSTRING(interesting,6,3); 結果:estr。38. SUBSTRING_INDEX(str,delim,n):以分界字元delim分割字串,取出n個str字串。範例:SELECT SUBSTRING_INDEX(,.,2); 結果:。39. TRIM(BOTH | LEADING | TRAILING remstr FROM str):將字串前後空白去除,或將前後(BOTH)字元remstr去除,或將前導(LEADING)字元去除,或將尾端(TRAILING)字元去除。範例1:SELECT TRIM( bar ); 結果:bar。範例2:SELECT TRIM(LEADING x FROM xxxbarxxx); 結果:barxxx。範例3:SELECT TRIM(BOTH x FROM xxxbarxxx); 結果:bar。範例4:SELECT TRIM(TRAILING xyz FROM barxyz); 結果:bar。40. UCASE(str):將str轉大寫。41. UNCOMPRESS (str):將以COMPRESS壓縮之字串 str 解壓縮。範例4:SELECT UNCOMPRESSED_LENGTH(COMPRESS(REPEAT(a,30);結果:3042. UNHEX(str):將16進制字串str轉回原字元。範例1:SELECT UNHEX(4D7953514C); 結果:MySQL。範例2:SELECT UNHEX(HEX(string); 結果:string。範例3:SELECT UNHEX(HEX(1267); 結果:1267。43. UPPER (str):將str轉大寫。C-4 字串轉換與比較函數1. CAST(N AS CHAR):將數值N直接轉為字元。範例:SELECT CAST(2.8 AS CHAR); 結果為:2.82. CONCAT(N):將數值N直接轉為字元。範例1:SELECT CONCAT(2, test); 結果:2 test。範例2:SELECT CONCAT(2.8); 結果:2.83. expr NOT LIKE pat ESCAPE escape-char:搜尋expr是否有pat樣板字串,樣板字串可搭配 “ %” 或 “_” 使用。若元字串內有 “ %” 或 “_”字元,則需使用 “ %” 或 “_”當樣板。%:用於批配任意個字元。_:只用於批配一個字元。範例1:SELECT DaviaLIKEDavid_; 結果:1。範例2:SELECT DaviaLIKE%D%v%; 結果:14. STRCMP(expr1,expr2):比較expr1與expr2是否相同。範例1:SELECT STRCMP(text, text1); 結果:-1。範例2:SELECT STRCMP(text1, text); 結果:1。範例1:SELECT STRCMP(text, text); 結果:0。C-5 數值函數1. 三角函數SIN(X),ASIN(X),COS(X),ACOS(X) ,TAN(X),ATAN(X) COT(X),DEGREES(X),RADIANS(X)。2. 指數與對數EXP(X),LN(X):自然對數,LOG(B, X):以B為底之自然對數,LOG2(X),LOG10(X)。3. ABS(X):求絕對值。4. CEILING(X), CEIL(X):比X大之整數。5. CRC32(expr):求CRC檢查碼,傳回一個32位元之無號值。範例:SELECT CRC32(MySQL); 結果:3259397556。6. FLOOR(X):比X小之整數。7. FORMAT(X, D):將數值X格式化,採千位加逗號形式,小數留D位。8. MOD(N,M),N % M ,N MOD M :求餘數。9. PI():求圓周率。10. POW(X,Y),POWER(X,Y):求X的Y次方值。11. RAND():求亂數值,RAND(N):以N當種子之可重複亂數值,若N省略,則為產生0到1.0之任意值。若可搭配SQL指令之 ORDER BY RAND() LIMIT N,可以隨機順序取出N筆紀錄。12. ROUND(X):將X四捨五入 ,ROUND(X,D) :將X四捨五入至小數D位。13. SIGN(X):符號函數,小於0時傳回-1,0時傳回0,大於0時傳回1。14. SQRT(X):求方根。15. TRUNCATE(X,D):捨去D位小數,若D為負值,則D位以下之值取為0。C-6 日期與時間函數1. ADDDATE(expr, days):求算expr(日期)加上days之日期。範例:SELECT ADDDATE(1998-01-02, 31); 結果:1998-02-02。2. ADDTIME(expr,expr2):求算expr (日期時間) 加上expr2 (時間) 之日期時間。範例:SELECT ADDTIME(1998-01-02 23:59:59.999999, 1 1:1:1.000002); 結果:1998-01-02 01:01:01.000001。3. CONVERT_TZ(dt, from_tz, to_tz):將dt 從時區from_tz 轉換至時區to_tz。範例:SELECT CONVERT_TZ(2004-01-01 12:00:00, GMT, MET); 結果:2004-01-01 13:00:00.00。範例:SELECT CONVERT_TZ(2004-01-01 12:00:00, +00:00, -07:00); 結果:2004-01-01 05:00:00.00。4. CURDATE():目前日期,此函數與CURRENT_DATE和 CURRENT_DATE()同義。範例1:SELECT CURDATE(); 結果:2006-06-06。範例2:SELECT CURDATE() + 0; 結果:20060606。5. CURTIME():目前時間,此函數與CURRENT_TIME和 CURRENT_TIME ()同義。範例1:SELECT CURTIME(); 結果:12:00:00。範例2:SELECT CURTIMTE() + 0; 結果:120000。6. CURRENT_TIMESTAMP/CURRENT_TIMESTAMP():目前時戳,與NOW()同義。範例1:SELECT CURRENT_TIMESTAMP(); 結果:2006-06-06 12:00:01。範例2:SELECT CURRENT_TIMESTAMP() + 0; 結果:20060606120001。7. DATE(expr):取出expr之日期。範例:SELECT DATE(2006-06-06 12:00:01); 結果:2006-06-06。8. DATEDIFF(expr,expr2):求算起始日期時間(expr)與截止日期時間expr2之間隔日期,只計算日期部份。範例:SELECT DATEDIFF(2005-11-30 12:00:01, 2005-12-31 ); 結果:-31。9. DATE_ADD(date,INTERVAL expr type):計算日期date加上間隔天數(或時、分、秒數)後之日期。範例:SELECT 1997-12-31 23:59:59 + INTERVAL 1 SECOND; 結果:1998-01-01 00:00:00。範例:SELECT 1998-01-01 - INTERVAL 1 SECOND; 結果:1997-12-31 23:59:59。範例:SELECT DATE_ADD(1997-12-31 23:59:59, INTERVAL 1 SECOND); 結果為:1998-01-01 00:00:00。範例:SELECT DATE_ADD(1997-12-31, INTERVAL 1 DAY); 結果:1998-01-01。範例:SELECT DATE_ADD(1998-01-01 00:00:00, INTERVAL -1 10 DAY_HOUR); 結果:1997-12-30 14:00:00。註::INTERVAL 尚可搭配其它參數,如表C-1所示,詳細用法請參閱 MySQL技術手冊。表C-1 DATE_ADD/DATE_SUB搭配參數格式type 參數 expr 參數格式 MICROSECOND MICROSECONDS SECOND SECONDS MINUTE MINUTES HOUR HOURS DAY DAYS WEEK WEEKS MONTH MONTHS QUARTER QUARTERS YEAR YEARS SECOND_MICROSECOND SECONDS.MICROSECONDS MINUTE_MICROSECOND MINUTES.MICROSECONDS MINUTE_SECOND MINUTES:SECONDS HOUR_MICROSECOND HOURS.MICROSECONDS HOUR_SECOND HOURS:MINUTES:SECONDS HOUR_MINUTE HOURS:MINUTES DAY_MICROSECOND DAYS.MICROSECONDS DAY_SECOND DAYS HOURS:MINUTES:SECONDS DAY_MINUTE DAYS HOURS:MINUTES DAY_HOUR DAYS HOURS YEAR_MONTH YEARS-MONTHS 10. DATE_SUB(date,INTERVAL expr type):計算日期date減去間隔天數(或時、分、秒數)後之日期。此函數用法與DATE_ADD()相同。11. DATE_FORMAT(date, format):將date轉換成對應format之日期格式,可使用之格式如表C-2,其中各格式可搭配混用。表C-2 日期輸出控制格式控制格式說 明%a文字型縮寫星期(Sun.Sat)%b文字型縮寫月份(Jan.Dec)%c數字型月份(0.12)%D每月第幾天, 序號型(0th, 1st, 2nd, 3rd, .)%d每月第幾天, 數字型(00.31)%e每月第幾天, 數字型(0.31)%f微秒(000000.999999)%H小時數, 24小時制(00.23)%h小時數, 12小時制(01.12)%I小時數, 12小時制(01.12)%i分數, 數字型(00.59)%j天數(001.366)%k小時數, 24小時制(0.23)%l小時數, 12小時制(1.12)%M文字型月份(January.December)%m數字型月份(00.12)%pAM 或 PM%r時:分:秒, 12小時制(接在AM或PM之後)%S / %s秒數 (00.59)%T時:分:秒, 24小時制(hh:mm:ss)%U週數 (00.53), 星期日為第一天%u週數(00.53), 星期一為第一天%V週數(01.53), 星期日為第一天; 搭配 %X%v週數(01.53), 星期一為第一天; 搭配%x%W文字型星期(Sunday.Saturday)%w星期天數 (0=Sunday.6=Saturday)%X四位數年份,星期日為第一天; 搭配%V%x四位數年份, 星期一為第一天; 搭配%v%Y/ %y四位數年份範例1:SELECT DATE_FORMAT(1997-10-04 22:23:00, %W %M %Y);結果: Saturday October 1997。範例2:SELECT DATE_FORMAT(1997-10-04 22:23:00, %H:%i:%s);結果: 22:23:00。範例3:SELECT DATE_FORMAT(1997-10-04 22:23:00, %D %y %a %d %m %b %j);結果:4th 97 Sat 04 10 Oct 277。範例4:SELECT DATE_FORMAT(1997-10-04 22:23:00, %H %k %I %r %T %S %w);結果:22 22 10 10:23:00 PM 22:23:00 00 6。範例5: SELECT DATE_FORMAT(1999-01-01, %X %V);結果:1998 52。12. DAY(date):將date轉成數字型天數,與DAYOFMONTH()同義。範例:SELECT DAYOFMONTH(1998-02-03);結果:3。13. DAYNAME(date):將date轉成英文格式之星期。範例:SELECT DAYNAME(1998-02-05);結果:Thursday。14. DAYOFWEEK(date):將date轉成數字型星期,1為星期日。範例:SELECT DAYOFMONTH(1998-02-03);結果:3。15. DAYOFYEAR(date):date年度之天序。範例:SELECT DAYOFMONTH(1998-02-03);結果:34。16. EXTRACT(type FROM date):以type格式抽出數字型日期資料,type可為:YEAR、 YEAR_MONTH、DAY_MINUTE、MICROSECOND。範例1:EXTRACT ( YEAR FROM 2006-06-06); 結果:2006。範例2:EXTRACT ( YEAR_MONTH FROM 2006-06-06 12:00:01); 結果:200606。範例3:EXTRACT ( DAY_MINUTE FROM 2006-06-06 12:00:01); 結果:61200。17. GET_FORMAT(DATE| TIME| DATETIME, EUR| USA| JIS| ISO| INTERNAL):取出指定格式化之日期,詳見表C-3。表C-3日期顯示格式傳入引數型態傳回結果GET_FORMAT(DATE,USA)%m.%d.%YGET_FORMAT(DATE,JIS)%Y-%m-%dGET_FORMAT(DATE,ISO)%Y-%m-%dGET_FORMAT(DATE,EUR)%d.%m.%YGET_FORMAT(DATE,INTERNAL)%Y%m%dGET_FORMAT(DATETIME,USA)%Y-%m-%d-%H.%i.%sGET_FORMAT(DATETIME,JIS)%Y-%m-%d %H:%i:%sGET_FORMAT(DATETIME,ISO)%Y-%m-%d %H:%i:%sGET_FORMAT(DATETIME,EUR)%Y-%m-%d-%H.%i.%sGET_FORMAT(DATETIME,INTERNAL)%Y%m%d%H%i%sGET_FORMAT(TIME,USA)%h:%i:%s %pGET_FORMAT(TIME,JIS)%H:%i:%sGET_FORMAT(TIME,ISO)%H:%i:%sGET_FORMAT(TIME,EUR)%H.%i.%SGET_FORMAT(TIME,INTERNAL)%H%i%s範例1: SELECT DATE_FORMAT(2003-10-03,GET_FORMAT(DATE,EUR);結果:03.10.2003。範例2: SELECT STR_TO_DATE(10.31.2003,GET_FORMAT(DATE,USA);結果:2003-10-31。18. HOUR(time):取出time引數之時數,24小時制。範例1:SELECT HOUR(10:05:03);結果: 10。範例2: SELECT HOUR(272:59:59);結果: 272,可大於23小時。19. LAST_DAY(date):取出date引數所屬月份最後一天之日期。範例1:SELECT LAST_DAY(2003-02-05);結果:2003-02-28。範例2:SELECT LAST_DAY(2004-02-05);結果:2004-02-29。範例3:SELECT LAST_DAY(2004-01-01 01:01:01);結果:2004-01-31。範例4:SELECT LAST_DAY(2003-03-32);結果: NULL。20. LOCALTIME,LOCALTIME(),LOCALTIMESTAMP,LOCALTIMESTAMP():與NOW()同義。21. MAKEDATE(year,dayofyear):將dayofyear天數轉為year年度之日期。範例1:SELECT MAKEDATE(2001,31), MAKEDATE(2001,32);結果:2001-01-31, 2001-02-01。範例2: SELECT MAKEDATE(2001,365), MAKEDATE(2004,365);結果:2001-12-31, 2004-12-30。範例3:SELECT MAKEDATE(2001,0);結果: NULL。22. MAKETIME(hour,minute,second):將三個引數轉為時間型資料。範例:SELECT MAKETIME(12,15,30);結果:12:15:30。23. MICROSECOND(expr):取出expr之微秒數。範例1:SELECT MICROSECOND(12:00:00.123456);結果:123456。範例2:SELECT MICROSECOND(1997-12-31 23:59:59.000010);結果:10。24. MINUTE(time):取出time之分鐘數。範例:SELECT MINUTE(98-02-03 10:05:03);結果:5。25. MONTH(date):取出date之月數。範例:SELECT MONTH(1998-02-03);結果:2。26. MONTHNAME(date):取出date之英文字型之月份。範例:SELECT MONTHNAME(1998-02-05);結果:February。27. QUARTER(date):取出date之季數。範例:SELECT QUARTER(98-04-01);結果:2。28. SECOND(time):取出time之秒數。範例:SELECT SECOND(10:05:03);結果:3。29. SEC_TO_TINE(seconds):將seconds轉成時間格式。範例1:SELECT SEC_TO_TIME(2378);結果:00:39:38。範例2:SELECT SEC_TO_TIME(2378) + 0;結果:3938。30. STR_TO_DATE(str,format):將傳入之str轉成日期時間,format用法與DATE_FORMAT()相同。範例1:SELECT STR_TO_DATE(03.10.2003 09.20, - %d.%m.%Y %H.%i);結果:2003-10-03 09:20:00。範例1:SELECT STR_TO_DATE(10arp, %carp);結果:0000-10-00 00:00:00。範例2:SELECT STR_TO_DATE(2003-15-10 00:00:00, %Y-%m-%d %H:%i:%s);結果:NULL。範例3:SELECT STR_TO_DATE(00/00/0000, %m/%d/%Y);結果:0000-00-00。範例4:SELECT STR_TO_DATE(04/31/2004, %m/%d/%Y); 結果:2004-04-31。31. SUBDATE(date,INTERVAL expr type):用法見DATE_SUB()。SUBDATE(expr,days):將expr減去days(天數)之日期。範例1:SELECT SUBDATE(1998-01-02, INTERVAL 31 DAY);結果:1997-12-02。範例2:SELECT SUBDATE(1998-01-02 12:00:00, 31);結果:1997-12-02 12:00:00。32. SUBTIME(expr,expr2):將expr減去expr2(時間)之日期時間。範例1:SELECT SUBTIME(1997-12-31 23:59:59.999999, 1 1:1:1.000002);結果:1997-12-30 22:58:58.999997範例2:SELECT SUBTIME(01:00:00.999999, 02:00:00.999998);結果:-00:59:59.99999933. SYSDATE():與NOW()同義。34. TIME(expr):取出expr之時間資料。範例1:SELECT TIME(2003-12-31 01:02:03);結果:01:02:03。範例2:SELECT TIME(2003-12-31 01:02:03.000123);結果:01:02:03.000123。35. TIMEDIFF(expr,expr2):將expr減去expr2(時間)之日期時間。範例1:SELECT TIMEDIFF(2000:01:01 00:00:00, 2000:01:01 00:00:00.000001);結果:-00:00:00.000001。範例2:SELECT TIMEDIFF(1997-12-31 23:59:59.000001, 1997-12-30 01:01:01.000002);結果:46:58:57.999999。36. TIMESTAMP(expr):將expr轉為時戳。範例1:SELECT TIMESTAMP(2003-12-31);結果:2003-12-31 00:00:00。範例2:SELECT TIMESTAMP(2003-12-31 12:00:00,12:00:00);結果:2004-01-01 00:00:00。37. TIME_TO_SEC(time):將time轉為秒數。範例1:SELECT TIME_TO_SEC(22:23:00);結果:80580。範例2:SELECT TIME_TO_SEC(00:39:38);結果:2378。38. WEEK(date,mode):取出date之週數,用法見表C-4。範例1:SELECT WEEK(1998-02-20);結果:7。範例2:SELECT WEEK(1998-02-20,0);結果:7。範例3:SELECT WEEK(1998-02-20,1);結果:8。範例4:SELECT WEEK(1998-12-31,1);結果:53。表C-4 週次計算方式Mode處理方式0週日為第一天; 傳回值為0 53; 第一週當年度開始日1週一為第一天; 傳回值為0 53; 第一週有三天以上在該年度2週日為第一天; 傳回值為1 53; 第一週當年度開始日3週一為第一天; 傳回值為1 53; 第一週有三天以上在該年度4週日為第一天; 傳回值為0 53; 第一週有三天以上在該年度5週一為第一天; 傳回值為0 53; 第一週當年度開始日6週日為第一天; 傳回值為1 53; 第一週有三天以上在該年度7週一為第一天; 傳回值為1 53; 第一週當年度開始日39. WEEKDAY(date):傳回date之毎週星期序(0=Monday,.)。範例1:SELECT WEEKDAY(1998-02-03 22:23:00);結果:1。範例2:SELECT WEEKDAY(1997-11-05);結果:2。40. WEEKOFYEAR(date):傳回date之週次。範例:SELECT WEEKOFYEAR(1998-02-20);結果:8。41. YEAR(date):傳回date之年份,四位數。範例:SELECT YEAR(1998-02-20);結果:19988。C-7 全文檢索MyISAM資料表可以執行全文檢索,前提是已建立全文型索引表(FULLTEXT)。CHAR、 VARCHAR、TEXT等欄位皆可建立全文型索引。全文檢索所使用之函數為MATCH()。1. 單純型全文檢索語法:MATCH (col1,col2,.) AGAINST (expr)說明:依據expr之條件,依序比對col1, col2,是否有符合expr之字串。col1, col2,必須與全文索引表鍵值欄位相同,比對時相關性高的紀錄優先列出。範例1:SELECT * FROM articles WHERE MATCH (title,body) AGAINST (database);範例2:SELECT id, MATCH (title,body) AGAINST (Tutorial) FROM articles;結果:MATCH (title,body) AGAINST (Tutorial)欄將以數值形式顯示比對結果。2. 複合型全文檢索語法:MATCH (col1,col2,.) AGAINST (expr IN BOOLEAN MODE)說明:依據expr之條件,依序比對col1, col2,是否有符合expr之字串。expr可搭配下述控制符號來建立樣板:+:必須包含此字串 - :排除此字串 提升,turnover strudel): 包含apple和turnover,或是apple和strudel, 但是apple和turnover順位優先。apple* :包含所有類似apple*之紀錄。some words:必須正確包含some words,若為”some noise words”則不符合。 3. 隱含型全文檢索語法:MATCH (col1,col2,.) AGAINST (expr WITH QUERY EXPANSION)說明:依據expr之條件,依序比對col1, col2,是否有符合expr之字串,然後再以優先順位最高之鍵值欄當鍵值,進行第二次查詢,符合一和二次搜尋條件之紀錄,全部列出。此類檢索方式又稱為盲目搜尋(blind search)。C-8 轉型函數1. BINARY:強制改變欄位或字串之比對方式,改為逐位元組而非逐字比對方式,因此會區分大小寫。範例1:SELECT a = A;結果:1。範例2:SELECT BINARY a = A;結果:0。範例3:SELECT a = a ;結果:1。範例4:SELECT BINARY a = a ;結果:0。2. Lower(),Upper():大小寫轉換函數。3. CAST(expr AS type),CONVERT(expr,type)說明:將expr轉型為指定之type型態,type可指定為下列資料型態: BINARY CHAR DATE DATETIME SIGNED INTEGER TIME UNSIGNED INTEGER 4. CONVERT(expr USING transcoding_name)
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!