程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL詳解(5)-----------函數超全總結

MySQL詳解(5)-----------函數超全總結

編輯:MySQL綜合教程

MySQL詳解(5)-----------函數超全總結


mysql函數大全
 
對於針對字符串位置的操作,第一個位置被標記為1。
ASCII(str) 
返回字符串str的最左面字符的ASCII代碼值。如果str是空字符串,返回0。如果str是NULL,返回NULL。
mysql> select ASCII('2');
    -> 50
mysql> select ASCII(2);
    -> 50
mysql> select ASCII('dx');
    -> 100
也可參見ORD()函數。
ORD(str) 
如果字符串str最左面字符是一個多字節字符,通過以格式((first byte ASCII code)*256+(second byte ASCII code))[*256+third byte ASCII code...]返回字符的ASCII代碼值來返回多字節字符代碼。如果最左面的字符不是一個多字節字符。返回與ASCII()函數返回的相同值。
mysql> select ORD('2');
    -> 50

CONV(N,from_base,to_base) 
在不同的數字基之間變換數字。返回數字N的字符串數字,從from_base基變換為to_base基,如果任何參數是NULL,返回NULL。參數N解釋為一個整數,但是可以指定為一個整數或一個字符串。最小基是2且最大的基是36。如果to_base是一個負數,N被認為是一個有符號數,否則,N被當作無符號數。 CONV以64位點精度工作。
mysql> select CONV("a",16,2);
    -> '1010'
mysql> select CONV("6E",18,8);
    -> '172'
mysql> select CONV(-17,10,-18);
    -> '-H'
mysql> select CONV(10+"10"+'10'+0xa,10,10);
    -> '40'

BIN(N) 
返回二進制值N的一個字符串表示,在此N是一個長整數(BIGINT)數字,這等價於CONV(N,10,2)。如果N是NULL,返回NULL。
mysql> select BIN(12);
    -> '1100'
OCT(N) 
返回八進制值N的一個字符串的表示,在此N是一個長整型數字,這等價於CONV(N,10,8)。如果N是NULL,返回NULL。
mysql> select OCT(12);
    -> '14'

HEX(N) 
返回十六進制值N一個字符串的表示,在此N是一個長整型(BIGINT)數字,這等價於CONV(N,10,16)。如果N是NULL,返回NULL。
mysql> select HEX(255);
    -> 'FF'

CHAR(N,...) 
CHAR()將參數解釋為整數並且返回由這些整數的ASCII代碼字符組成的一個字符串。NULL值被跳過。
mysql> select CHAR(77,121,83,81,'76');
    -> 'MySQL'
mysql> select CHAR(77,77.3,'77.3');
    -> 'MMM'

CONCAT(str1,str2,...) 
返回來自於參數連結的字符串。如果任何參數是NULL,返回NULL。可以有超過2個的參數。一個數字參數被變換為等價的字符串形式。
mysql> select CONCAT('My', 'S', 'QL');
    -> 'MySQL'
mysql> select CONCAT('My', NULL, 'QL');
    -> NULL
mysql> select CONCAT(14.3);
    -> '14.3'
LENGTH(str) 
 
OCTET_LENGTH(str) 
 
CHAR_LENGTH(str) 
 
CHARACTER_LENGTH(str) 
返回字符串str的長度。
mysql> select LENGTH('text');
    -> 4
mysql> select OCTET_LENGTH('text');
    -> 4
注意,對於多字節字符,其CHAR_LENGTH()僅計算一次。
LOCATE(substr,str) 
 
POSITION(substr IN str) 
返回子串substr在字符串str第一個出現的位置,如果substr不是在str裡面,返回0.
mysql> select LOCATE('bar', 'foobarbar');
    -> 4
mysql> select LOCATE('xbar', 'foobar');
    -> 0
該函數是多字節可靠的。
LOCATE(substr,str,pos) 
返回子串substr在字符串str第一個出現的位置,從位置pos開始。如果substr不是在str裡面,返回0。
mysql> select LOCATE('bar', 'foobarbar',5);
    -> 7
這函數是多字節可靠的。
INSTR(str,substr) 
返回子串substr在字符串str中的第一個出現的位置。這與有2個參數形式的LOCATE()相同,除了參數被顛倒。
mysql> select INSTR('foobarbar', 'bar');
    -> 4
mysql> select INSTR('xbar', 'foobar');
    -> 0
這函數是多字節可靠的。
LPAD(str,len,padstr) 
返回字符串str,左面用字符串padstr填補直到str是len個字符長。
mysql> select LPAD('hi',4,'??');
    -> '??hi'

RPAD(str,len,padstr) 
返回字符串str,右面用字符串padstr填補直到str是len個字符長。
mysql> select RPAD('hi',5,'?');
    -> 'hi???'
LEFT(str,len) 
返回字符串str的最左面len個字符。
mysql> select LEFT('foobarbar', 5);
    -> 'fooba'
該函數是多字節可靠的。
RIGHT(str,len) 
返回字符串str的最右面len個字符。
mysql> select RIGHT('foobarbar', 4);
    -> 'rbar'
該函數是多字節可靠的。
SUBSTRING(str,pos,len) 
 
SUBSTRING(str FROM pos FOR len) 
 
MID(str,pos,len) 
從字符串str返回一個len個字符的子串,從位置pos開始。使用FROM的變種形式是ANSI SQL92語法。
mysql> select SUBSTRING('Quadratically',5,6);
    -> 'ratica'
該函數是多字節可靠的。
SUBSTRING(str,pos) 
 
SUBSTRING(str FROM pos) 
從字符串str的起始位置pos返回一個子串。
mysql> select SUBSTRING('Quadratically',5);
    -> 'ratically'
mysql> select SUBSTRING('foobarbar' FROM 4);
    -> 'barbar'
該函數是多字節可靠的。
SUBSTRING_INDEX(str,delim,count) 
返回從字符串str的第count個出現的分隔符delim之後的子串。如果count是正數,返回最後的分隔符到左邊(從左邊數)的所有字符。如果count是負數,返回最後的分隔符到右邊的所有字符(從右邊數)。
mysql> select SUBSTRING_INDEX('www.mysql.com', '.', 2);
    -> 'www.mysql'
mysql> select SUBSTRING_INDEX('www.mysql.com', '.', -2);
    -> 'mysql.com'
該函數對多字節是可靠的。
LTRIM(str) 
返回刪除了其前置空格字符的字符串str。
mysql> select LTRIM(' barbar');
    -> 'barbar'
RTRIM(str) 
返回刪除了其拖後空格字符的字符串str。
mysql> select RTRIM('barbar   ');
    -> 'barbar'
該函數對多字節是可靠的。
TRIM([[BOTH | LEA
DING | TRAILING] [remstr] FROM] str)
返回字符串str,其所有remstr前綴或後綴被刪除了。如果沒有修飾符BOTH、LEADING或TRAILING給出,BOTH被假定。如果remstr沒被指定,空格被刪除。
mysql> select TRIM(' bar   ');
    -> 'bar'
mysql> select TRIM(LEADING 'x' FROM 'xxxbarxxx');
    -> 'barxxx'
mysql> select TRIM(BOTH 'x' FROM 'xxxbarxxx');
    -> 'bar'
mysql> select TRIM(TRAILING 'xyz' FROM 'barxxyz');
    -> 'barx'
該函數對多字節是可靠的。
SOUNDEX(str) 
返回str的一個同音字符串。聽起來“大致相同”的2個字符串應該有相同的同音字符串。一個“標准”的同音字符串長是4個字符,但是SOUNDEX()函數返回一個任意長的字符串。你可以在結果上使用SUBSTRING()得到一個“標准”的同音串。所有非數字字母字符在給定的字符串中被忽略。所有在A-Z之外的字符國際字母被當作元音。
mysql> select SOUNDEX('Hello');
    -> 'H400'
mysql> select SOUNDEX('Quadratically');
    -> 'Q36324'

SPACE(N) 
返回由N個空格字符組成的一個字符串。
mysql> select SPACE(6);
    -> '     '

REPLACE(str,from_str,to_str) 
返回字符串str,其字符串from_str的所有出現由字符串to_str代替。
mysql> select REPLACE('www.mysql.com', 'w', 'Ww');
    -> 'WwWwWw.mysql.com'
該函數對多字節是可靠的。
REPEAT(str,count) 
返回由重復countTimes次的字符串str組成的一個字符串。如果count <= 0,返回一個空字符串。如果str或count是NULL,返回NULL。
mysql> select REPEAT('MySQL', 3);
    -> 'MySQLMySQLMySQL'

REVERSE(str) 
返回顛倒字符順序的字符串str。
mysql> select REVERSE('abc');
    -> 'cba'
該函數對多字節可靠的。
INSERT(str,pos,len,newstr) 
返回字符串str,在位置pos起始的子串且len個字符長得子串由字符串newstr代替。
mysql> select INSERT('Quadratic', 3, 4, 'What');
    -> 'QuWhattic'
該函數對多字節是可靠的。
ELT(N,str1,str2,str3,...) 
如果N= 1,返回str1,如果N= 2,返回str2,等等。如果N小於1或大於參數個數,返回NULL。ELT()是FIELD()反運算。
mysql> select ELT(1, 'ej', 'Heja', 'hej', 'foo');
    -> 'ej'
mysql> select ELT(4, 'ej', 'Heja', 'hej', 'foo');
    -> 'foo'
FIELD(str,str1,str2,str3,...) 
返回str在str1, str2, str3, ...清單的索引。如果str沒找到,返回0。FIELD()是ELT()反運算。
mysql> select FIELD('ej', 'Hej', 'ej', 'Heja', 'hej', 'foo');
    -> 2
mysql> select FIELD('fo', 'Hej', 'ej', 'Heja', 'hej', 'foo');
    -> 0
FIND_IN_SET(str,strlist) 
如果字符串str在由N子串組成的表strlist之中,返回一個1到N的值。一個字符串表是被“,”分隔的子串組成的一個字符串。如果第一個參數是一個常數字符串並且第二個參數是一種類型為SET的列,FIND_IN_SET()函數被優化而使用位運算!如果str不是在strlist裡面或如果strlist是空字符串,返回0。如果任何一個參數是NULL,返回NULL。如果第一個參數包含一個“,”,該函數將工作不正常。
mysql> SELECT FIND_IN_SET('b','a,b,c,d');
    -> 2

MAKE_SET(bits,str1,str2,...) 
返回一個集合 (包含由“,”字符分隔的子串組成的一個字符串),由相應的位在bits集合中的的字符串組成。str1對應於位0,str2對應位1,等等。在str1, str2, ...中的NULL串不添加到結果中。
mysql> SELECT MAKE_SET(1,'a','b','c');
    -> 'a'
mysql> SELECT MAKE_SET(1 | 4,'hello','nice','world');
    -> 'hello,world'
mysql> SELECT MAKE_SET(0,'a','b','c');
    -> ''
EXPORT_SET(bits,on,off,[separator,[number_of_bits]]) 
返回一個字符串,在這裡對於在“bits”中設定每一位,你得到一個“on”字符串,並且對於每個復位(reset)的位,你得到一個“off”字符串。每個字符串用“separator”分隔(缺省“,”),並且只有“bits”的“number_of_bits” (缺省64)位被使用。
mysql> select EXPORT_SET(5,'Y','N',',',4)
    -> Y,N,Y,N 
LCASE(str) 
 
LOWER(str) 
返回字符串str,根據當前字符集映射(缺省是ISO-8859-1 Latin1)把所有的字符改變成小寫。該函數對多字節是可靠的。
mysql> select LCASE('QUADRATICALLY');
    -> 'quadratically'

UCASE(str) 
 
UPPER(str) 
返回字符串str,根據當前字符集映射(缺省是ISO-8859-1 Latin1)把所有的字符改變成大寫。該函數對多字節是可靠的。
mysql> select UCASE('Hej');
    -> 'HEJ'
該函數對多字節是可靠的。
LOAD_FILE(file_name) 
讀入文件並且作為一個字符串返回文件內容。文件必須在服務器上,你必須指定到文件的完整路徑名,而且你必須有file權限。文件必須所有內容都是可讀的並且小於max_allowed_packet。如果文件不存在或由於上面原因之一不能被讀出,函數返回NULL。
mysql> UPDATE table_name
      SET blob_column=LOAD_FILE("/tmp/picture")
      WHERE id=1;

MySQL必要時自動變換數字為字符串,並且反過來也如此:
mysql> SELECT 1+"1";
    -> 2
mysql> SELECT CONCAT(2,' test');
    -> '2 test'
如果你想要明確地變換一個數字到一個字符串,把它作為參數傳遞到CONCAT()。
如果字符串函數提供一個二進制字符串作為參數,結果字符串也是一個二進制字符串。被變換到一個字符串的數字被當作是一個二進制字符串。這僅影響比較
 
                                      mysql時間函數用法集合
 
這裡是一個使用日期函數的例子。下面的查詢選擇了所有記錄,其date_col的值是在最後30天以內: 
  mysql> SELECT something FROM table 
  WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 30;  
  DAYOFWEEK(date) 
  返回日期date的星期索引(1=星期天,2=星期一, ……7=星期六)。這些索引值對應於ODBC標准。 
  mysql> select DAYOFWEEK('1998-02-03'); 
  -> 3  
  WEEKDAY(date) 
  返回date的星期索引(0=星期一,1=星期二, ……6= 星期天)。 
  mysql> select WEEKDAY('1997-10-04 22:23:00'); 
  -> 5  
  mysql> select WEEKDAY('1997-11-05'); 
  -> 2  
  DAYOFMONTH(date) 
  返回date的月份中日期,在1到31范圍內。 
  mysql> select DAYOFMONTH('1998-02-03'); 
  -> 3  
  DAYOFYEAR(date) 
  返回date在一年中的日數, 在1到366范圍內。  
  mysql> select DAYOFYEAR('1998-02-03'); 
  -> 34  
  MONTH(date) 
  返回date的月份,范圍1到12。  
  mysql> select MONTH('1998-02-03'); 
  -> 2  
  DAYNAME(date) 
  返回date的星期名字。  
  mysql> select DAYNAME("1998-02-05"); 
  -> 'Thursday'  
  MONTHNAME(date) 
  返回date的月份名字。  
  mysql> select MONTHNAME("1998-02-05"); 
  -> 'February'  
  QUARTER(date) 
  返回date一年中的季度,范圍1到4。 
  mysql> select QUARTER('98-04-01'); 
  -> 2  
  WEEK(date) 
     
  WEEK(date,first) 
  對於星期天是一周的第一天的地方,有一個單個參數,返回date的周數,范圍在0到52。2個參數形式WEEK()允許你指定星期是否開始於星期天或星期一。如果第二個參數是0,星期從星期天開始,如果第二個參數是1,從星期一開始。 
  mysql> select WEEK('1998-02-20'); 
  -> 7  
  mysql> select WEEK('1998-02-20',0); 
  -> 7  
  mysql> select WEEK('1998-02-20',1); 
  -> 8  
  YEAR(date) 
  返回date的年份,范圍在1000到9999。  
  mysql> select YEAR('98-02-03'); 
  -> 1998  
  HOUR(time) 
  返回time的小時,范圍是0到23。 
  mysql> select HOUR('10:05:03'); 
  -> 10  
  MINUTE(time) 
  返回time的分鐘,范圍是0到59。 
  mysql> select MINUTE('98-02-03 10:05:03'); 
  -> 5  
  SECOND(time) 
  回來time的秒數,范圍是0到59。 
  mysql> select SECOND('10:05:03'); 
  -> 3  
  PERIOD_ADD(P,N) 
  增加N個月到階段P(以格式YYMM或YYYYMM)。以格式YYYYMM返回值。注意階段參數P不是日期值。 
  mysql> select PERIOD_ADD(9801,2); 
  -> 199803  
  PERIOD_DIFF(P1,P2) 
  返回在時期P1和P2之間月數,P1和P2應該以格式YYMM或YYYYMM。注意,時期參數P1和P2不是日期值。 
  mysql> select PERIOD_DIFF(9802,199703); 
  -> 11  
  DATE_ADD(date,INTERVAL expr type) 
     
  DATE_SUB(date,INTERVAL expr type) 
     
  ADDDATE(date,INTERVAL expr type) 
     
  SUBDATE(date,INTERVAL expr type) 
  這些功能執行日期運算。對於MySQL 3.22,他們是新的。ADDDATE()和SUBDATE()是DATE_ADD()和DATE_SUB()的同義詞。
  在MySQL 3.23中,你可以使用+和-而不是DATE_ADD()和DATE_SUB()。(見例子)date是一個指定開始日期的
  DATETIME或DATE值,expr是指定加到開始日期或從開始日期減去的間隔值一個表達式,expr是一個字符串;它可以以
  一個“-”開始表示負間隔。type是一個關鍵詞,指明表達式應該如何被解釋。EXTRACT(type FROM date)函數從日期
  中返回“type”間隔。下表顯示了type和expr參數怎樣被關聯: type值 含義 期望的expr格式 
  SECOND 秒 SECONDS  
  MINUTE 分鐘 MINUTES  
  HOUR 時間 HOURS  
  DAY 天 DAYS  
  MONTH 月 MONTHS  
  YEAR 年 YEARS  
  MINUTE_SECOND 分鐘和秒 "MINUTES:SECONDS" 
  HOUR_MINUTE 小時和分鐘 "HOURS:MINUTES" 
  DAY_HOUR 天和小時 "DAYS HOURS"  
  YEAR_MONTH 年和月 "YEARS-MONTHS" 
  HOUR_SECOND 小時, 分鐘, "HOURS:MINUTES:SECONDS" 
  DAY_MINUTE 天, 小時, 分鐘 "DAYS HOURS:MINUTES" 
  DAY_SECOND 天, 小時, 分鐘, 秒 "DAYS HOURS:MINUTES:SECONDS"  
  MySQL在expr格式中允許任何標點分隔符。表示顯示的是建議的分隔符。如果date參數是一個DATE值並且你的計算僅僅包含YEAR、MONTH和DAY部分(即,沒有時間部分),結果是一個DATE值。否則結果是一個DATETIME值。 
  mysql> SELECT "1997-12-31 23:59:59" + INTERVAL 1 SECOND; 
  -> 1998-01-01 00:00:00  
  mysql> SELECT INTERVAL 1 DAY + "1997-12-31"; 
  -> 1998-01-01  
  mysql> SELECT "1998-01-01" - INTERVAL 1 SECOND; 
  -> 1997-12-31 23:59:59  
  mysql> SELECT DATE_ADD("1997-12-31 23:59:59", 
  INTERVAL 1 SECOND);  
  -> 1998-01-01 00:00:00  
  mysql> SELECT DATE_ADD("1997-12-31 23:59:59", 
  INTERVAL 1 DAY);  
  -> 1998-01-01 23:59:59  
  mysql> SELECT DATE_ADD("1997-12-31 23:59:59", 
  INTERVAL "1:1" MINUTE_SECOND); 
  -> 1998-01-01 00:01:00  
  mysql> SELECT DATE_SUB("1998-01-01 00:00:00", 
  INTERVAL "1 1:1:1" DAY_SECOND); 
  -> 1997-12-30 22:58:59  
  mysql> SELECT DATE_ADD("1998-01-01 00:00:00", 
  INTERVAL "-1 10" DAY_HOUR);  
  -> 1997-12-30 14:00:00  
  mysql> SELECT DATE_SUB("1998-01-02", INTERVAL 31 DAY); 
  -> 1997-12-02  
  mysql> SELECT EXTRACT(YEAR FROM "1999-07-02"); 
  -> 1999  
  mysql> SELECT EXTRACT(YEAR_MONTH FROM "1999-07-02 01:02:03"); 
  -> 199907  
  mysql> SELECT EXTRACT(DAY_MINUTE FROM "1999-07-02 01:02:03"); 
  -> 20102  
  如果你指定太短的間隔值(不包括type關鍵詞期望的間隔部分),MySQL假設你省掉了間隔值的最左面部分。例如,如果你指定一個type是DAY_SECOND,值expr被希望有天、小時、分鐘和秒部分。如果你象"1:10"這樣指定值,MySQL假設日子和小時部分是丟失的並且值代表分鐘和秒。換句話說,"1:10" DAY_SECOND以它等價於"1:10" MINUTE_SECOND的方式解釋,這對那MySQL解釋TIME值表示經過的時間而非作為一天的時間的方式有二義性。如果你使用確實不正確的日期,結果是NULL。如果你增加MONTH、YEAR_MONTH或YEAR並且結果日期大於新月份的最大值天數,日子在新月用最大的天調整。 
  mysql> select DATE_ADD('1998-01-30', Interval 1 month); 
  -> 1998-02-28  
  注意,從前面的例子中詞INTERVAL和type關鍵詞不是區分大小寫的。 
  
  TO_DAYS(date) 
  給出一個日期date,返回一個天數(從0年的天數)。 
  mysql> select TO_DAYS(950501); 
  -> 728779  
  mysql> select TO_DAYS('1997-10-07'); 
  -> 729669  
  TO_DAYS()
  不打算用於使用格列高裡歷(1582)出現前的值。 
  FROM_DAYS(N) 
  給出一個天數N,返回一個DATE值。 
  mysql> select FROM_DAYS(729669); 
  -> '1997-10-07'  
  DATE_FORMAT(date,format) 
  根據format字符串格式化date值。下列修飾符可以被用在format字符串中: %M 月名字(January……December) 
  %W 星期名字(Sunday……Saturday) 
  %D 有英語前綴的月份的日期(1st, 2nd, 3rd, 等等。) 
  %Y 年, 數字, 4 位  
  %y 年, 數字, 2 位  
  %a 縮寫的星期名字(Sun……Sat)  
  %d 月份中的天數, 數字(00……31)  
  %e 月份中的天數, 數字(0……31)  
  %m 月, 數字(01……12)  
  %c 月, 數字(1……12)  
  %b 縮寫的月份名字(Jan……Dec)  
  %j 一年中的天數(001……366)  
  %H 小時(00……23)  
  %k 小時(0……23)  
  %h 小時(01……12)  
  %I 小時(01……12)  
  %l 小時(1……12)  
  %i 分鐘, 數字(00……59)  
  %r 時間,12 小時(hh:mm:ss [AP]M)  
  %T 時間,24 小時(hh:mm:ss)  
  %S 秒(00……59)  
  %s 秒(00……59)  
  %p AM或PM  
  %w 一個星期中的天數(0=Sunday ……6=Saturday ) 
  %U 星期(0……52), 這裡星期天是星期的第一天  
  %u 星期(0……52), 這裡星期一是星期的第一天  
  %% 一個文字“%”。 
  所有的其他字符不做解釋被復制到結果中。 
  mysql> select DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y'); 
  -> 'Saturday October 1997'  
  mysql> select DATE_FORMAT('1997-10-04 22:23:00', '%H:%i:%s'); 
  -> '22:23:00'  
  mysql> select DATE_FORMAT('1997-10-04 22:23:00', 
  '%D %y %a %d %m %b %j');  
  -> '4th 97 Sat 04 10 Oct 277' 
  mysql> 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' 
  MySQL3.23中,在格式修飾符字符前需要%。在MySQL更早的版本中,%是可選的。 
  TIME_FORMAT(time,format) 
  這象上面的DATE_FORMAT()函數一樣使用,但是format字符串只能包含處理小時、分鐘和秒的那些格式修飾符。其他修飾符產生一個NULL值或0。 
  
  CURDATE() 
     
  CURRENT_DATE 
  以'YYYY-MM-DD'或YYYYMMDD格式返回今天日期值,取決於函數是在一個字符串還是數字上下文被使用。 
  mysql> select CURDATE();  
  -> '1997-12-15'  
  mysql> select CURDATE() + 0;  
  -> 19971215  
  CURTIME() 
     
  CURRENT_TIME 
  以'HH:MM:SS'或HHMMSS格式返回當前時間值,取決於函數是在一個字符串還是在數字的上下文被使用。 
  mysql> select CURTIME();  
  -> '23:50:26'  
  mysql> select CURTIME() + 0;  
  -> 235026  
  NOW() 
     
  SYSDATE()  
     
  CURRENT_TIMESTAMP 
  以'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS格式返回當前的日期和時間,取決於函數是在一個字符串還是在數字的上下文被使用。 
  mysql> select NOW();  
  -> '1997-12-15 23:50:26'  
  mysql> select NOW() + 0;  
  -> 19971215235026  
  UNIX_TIMESTAMP() 
     
  UNIX_TIMESTAMP(date) 
  如果沒有參數調用,返回一個Unix時間戳記(從'1970-01-01 00:00:00'GMT開始的秒數)。如果UNIX_TIMESTAMP()用一個date參數被調用,它返回從'1970-01-01 00:00:00' GMT開始的秒數值。date可以是一個DATE字符串、一個DATETIME字符串、一個TIMESTAMP或以YYMMDD或YYYYMMDD格式的本地時間的一個數字。 
  mysql> select UNIX_TIMESTAMP(); 
  -> 882226357  
  mysql> select UNIX_TIMESTAMP('1997-10-04 22:23:00'); 
  -> 875996580  
  當UNIX_TIMESTAMP被用於一個TIMESTAMP列,函數將直接接受值,沒有隱含的“string-to-unix-timestamp”變換。 
  FROM_UNIXTIME(unix_timestamp) 
  以'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS格式返回unix_timestamp參數所表示的值,取決於函數是在一個字符串還是或數字上下文中被使用。 
  mysql> select FROM_UNIXTIME(875996580); 
  -> '1997-10-04 22:23:00'  
  mysql> select FROM_UNIXTIME(875996580) + 0; 
  -> 19971004222300  
  FROM_UNIXTIME(unix_timestamp,format) 
  返回表示 Unix 時間標記的一個字符串,根據format字符串格式化。format可以包含與DATE_FORMAT()函數列出的條目同樣的修飾符。 
  mysql> select FROM_UNIXTIME(UNIX_TIMESTAMP(), 
  '%Y %D %M %h:%i:%s %x');  
  -> '1997 23rd December 03:43:30 x'  
  SEC_TO_TIME(seconds) 
  返回seconds參數,變換成小時、分鐘和秒,值以'HH:MM:SS'或HHMMSS格式化,取決於函數是在一個字符串還是在數字上下文中被使用。 
  mysql> select SEC_TO_TIME(2378); 
  -> '00:39:38'  
  mysql> select SEC_TO_TIME(2378) + 0; 
  -> 3938  
  TIME_TO_SEC(time) 
  返回time參數,轉換成秒。  
  mysql> select TIME_TO_SEC('22:23:00'); 
  -> 80580  
  mysql> select TIME_TO_SEC('00:39:38'); 
  -> 2378 
Mysql取系統函數:
Select curtime();
Select curdate():
Select sysdate():
select now();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
一、控制流程函數
 
a)   CASE WHEN THEN 函數
 
語法: CASE value WHEN [compare-value] THEN result [WHEN [compare-value] THEN result……] [ELSE result ] END CASE WHEN [condition] THEN result [WHEN[condition] THEN result……] [ELSE result] END;
 
函數用法說明:在第一個方案的返回結果中, value =compare-value。而第二個方案的返回結果是第一種情況的真實結果。如果沒有匹配的結果值,則返回結果為 ELSE後的結果,如果沒有 ELSE部分,則返回值為 NULL
 
b)        IF 函數用法
 
語法: IF(expr1,expr2,expr3)
 
函數用法說明:如果 expr1是 TRUE (expr1 <> 0 and expr1 <> NULL),則 IF()的返回值為 expr2 ;否則返回值則為 expr3。 IF()的返回值為數字值或字符串值,具體情況視其所在語境而定
 
c)        IFNULL 函數
 
語法: IFNULL(expr1,expr2)
 
函數用法說明:假如 expr1不為 NULL,則 IFNULL()的返回值為 expr1 ;否則其返回值為 expr2。 IFNULL()的返回值是數字或是字符串,具體情況取決於其所使用的語境
 
二、字符串比較函數
 
a)         函數 ascii(str)
 
函數用法說明:返回值為字符串 str的最左字符的數值。假如 str為空字符串,則返回值為 0。假如 str為 NULL,則返回值為 NULL。 ASCII()用於帶有從 0到 255的數值的字符
 
b)        函數 BIN(N)
 
函數用法說明:返回值為 N的二進制值的字符串表示,其中   N為一個 longlong (BIGINT)數字。這等同於 CONV(N ,10,2)。假如 N 為 NULL,則返回值為 NULL 。
 
c)        函數CHAR(N ,... [USING charset ])
 
函數用法說明: CHAR()將每個參數 N理解為一個整數,其返回值為一個包含這些整數的代碼值所給出的字符的字符串。 NULL值被省略。
 
d)        函數CHAR_LENGTH(str )
 
函數使用說明:返回值為字符串 str的長度,長度的單位為字符。一個多字節字符算作一個單字符。對於一個包含五個二字節字符集 , LENGTH() 返回值為 10, 而 CHAR_LENGTH() 的返回值為 5
 
e)         函數 CHARACTER_LENGTH(str )
 
函數使用說明: CHARACTER_LENGTH()是 CHAR_LENGTH()的同義詞。
 
f)         函數 COMPRESS(string_to_compress )
 
函數使用說明: COMPRESS(壓縮一個字符串。這個函數要求 MySQL已經用一個
 
諸如 zlib 的壓縮庫壓縮過。    否則,返回值始終是 NULL。 UNCOMPRESS()可將壓縮過的字符串進行解壓縮 )。
 
g)        函數 CONCAT(str1 ,str2 ,...) 
 
函數使用說明:返回結果為連接參數產生的字符串。如有任何一個參數為 NULL,則
 
返回值為 NULL 。或許有一個或多個參數。 如果所有參數均為非二進制字符串,則結果為非二進制字符串。如果自變量中含有任一二進制字符串,則結果為一個二進制字符串。一個數字參數被轉化為與之相等的二進制字符串格式;若要避免這種情況,可使用顯式類型 cast,例如: SELECT CONCAT(CAST(int_col AS CHAR), char_col)
 
h)        函數 CONCAT_WS(separator ,str1 ,str2 ,...)
 
函數使用說明: CONCAT_WS()代表 CONCAT With Separator,是 CONCAT() 的
 
特殊形式。   第一個參數是其它參數的分隔符。分隔符的位置放在要連接的兩個字符串之間。分隔符可以是一個字符串,也可以是其它參數。如果分隔符為 NULL,則結果為 NULL。函數會忽略任何分隔符參數後的 NULL值。
 
i)      函數CONV(N from_base, to_base)
 
函數使用說明:不同數基間轉換數字。返回值為數字的 N字符串表示,由 from_base基轉化為 to_base基。如有任意一個參數為 NULL,則返回值為 NULL 。自變量 N被理解為一個整數,但是可以被指定為一個整數或字符串。最小基數為 2 ,而最大基數則為 36。 If to_base 是一個負數,則 N被看作一個帶符號數。否則, N 被看作無符號數。 CONV() 的運行精確度為 64 比特。
 
j)          函數 ELT(N ,str1 ,str2 ,str3 ,...)
 
函數使用說明:若 N = 1,則返回值為   str1,若 N = 2,則返回值為 str2,以此
 
類推。    若 N 小於 1 或大於參數的數目,則返回值為 NULL 。 ELT() 是   FIELD() 的補數
 
k)      函數 EXPORT_SET(bits ,on ,off [,separator [,number_of_bits ]])
 
函數使用說明: 返回值為一個字符串,其中對於 bits 值中的每個位組,可以得到
 
一個 on 字符串,而對於每個清零比特位,可以得到一個 off 字符串。 bits 中的比特值按照從右到左的順序接受檢驗 ( 由低位比特到高位比特 ) 。字符串被分隔字符串分開 ( 默認為逗號 ‘,’) ,按照從左到右的順序被添加到結果中。 number_of_bits會給出被檢驗的二進制位數 (默認為 64)。
 
l)          函數 FIELD(str, str1, str2, str3,…...)
 
函數使用說明:返回值為 str1 , str2 , str3 ,……列表中的 str指數。在找不到 str的情況下,返回值為 0。如果所有對於 FIELD()的參數均為字符串,則所有參數均按照字符串進行比較。如果所有的參數均為數字,則按照數字進行比較。否則,參數按照雙倍進行比較。如果 str為 NULL,則返回值為 0,原因是 NULL不能同任何值進行同等比較。 FIELD()是 ELT()的補數。
 
m)      函數FIND_IN_SET(str, strlist)
 
函數使用說明: 假如字符串 str 在由 N 子鏈組成的字符串列表 strlist 中, 則返
 
回值的范圍在 1 到 N 之間 。一個字符串列表就是一個由一些被‘,’符號分開的自鏈組成的字符串。如果第一個參數是一個常數字符串,而第二個是 type SET 列,則    FIND_IN_SET() 函數被優化,使用比特計算。如果 str不在 strlist或 strlist為空字符串,則返回值為 0。如任意一個參數為 NULL,則返回值為 NULL。這個函數在第一個參數包含一個逗號 (‘,’)時將無法正常運行。
 
n)        函數 FORMAT(X ,D )
 
函數使用說明: 將 number X 設置為格式 '#,###,###.##', 以四捨五入的方式保留到小數點後 D 位 , 而返回結果為一個字符串。
 
o)        函數 HEX(N_or_S )
 
函數使用說明:如果N_OR_S是一個數字,則返回一個十六進制值 N 的字符串表示,在這裡,   N 是一個longlong (BIGINT)數。這相當於 CONV(N,10,16)。如果N_OR_S 是一個字符串,則返回值為一個N_OR_S的十六進制字符串表示,其中每個N_OR_S 裡的每個字符被轉化為兩個十六進制數字。
 
p)      函數INSTR(str,substr)
 
函數使用說明:返回字符串 str中子字符串的第一個出現位置。這和LOCATE()的雙參數形式相同,除非參數的順序被顛倒。
 
q)      函數LCASE(str)
 
函數使用說明:LCASE()是 LOWER()的同義詞
 
r)      函數LEFT(str,len)
 
函數使用說明:返回從字符串str開始的len最左字符
 
s)      函數 LENGTH(str )
 
函數使用說明: 返回值為字符串 str 的長度,單位為字節。一個多字節字符算作多字節。這意味著對於一個包含 5個 2字節字符的字符串, LENGTH()的返回值為 10, 而 CHAR_LENGTH()的返回值則為5 。
 
t)          函數 LOAD_FILE(file_name)
 
函數使用說明:讀取文件並將這一文件按照字符串的格式返回。文件的位置必須在服務器上 ,你必須為文件制定路徑全名,而且你還必須擁有 FILE特許權。文件必須可讀取,文件容量必須小於 max_allowed_packet字節。若文件不存在,或因不滿足上述條件而不能被讀取,則函數返回值為 NULL
 
u)      函數 LOCATE(substr ,str ) , LOCATE(substr ,str ,pos )
 
函數使用說明:第一個語法返回字符串 str中子字符串substr的第一個出現位置。第二個語法返回字符串 str中子字符串substr的第一個出現位置,起始位置在pos。如若substr不在str中,則返回值為0。
 
v)      函數LOWER(str )
 
函數使用說明:返回字符串 str以及所有根據最新的字符集映射表變為小寫字母的字符
 
w)      函數LPAD(str ,len ,padstr )
 
函數使用說明:返回字符串 str ,其左邊由字符串padstr填補到len 字符長度。假如str的長度大於len , 則返回值被縮短至 len字符。
 
x)      函數LTRIM(str )
 
函數使用說明:返回字符串 str,其引導空格字符被刪除。
 
y)      函數 MAKE_SET(bits ,str1 ,str2 ,...)
 
函數使用說明: 返回一個設定值 ( 一個包含被 ‘,’ 號分開的字字符串的字符串 ),由在 bits組中具有相應的比特的字符串組成。 str1對應比特 0, str2對應比特 1,以此類推。 str1 , str2 , ...中的 NULL 值不會被添加到結果中。
 
z)      函數 MID(str ,pos ,len )
 
函數使用說明: MID(str ,pos ,len )是 SUBSTRING(str ,pos ,len )的同義詞。
 
aa) 函數 OCT(N )
函數使用說明:返回一個 N的八進制值的字符串表示,其中 N是一個 longlong (BIGINT) 數。這等同於 CONV(N,10,8)。若 N 為 NULL,則返回值為 NULL 。
 
bb) 函數 OCTET_LENGTH(str )
 
函數使用說明: OCTET_LENGTH()是 LENGTH()的同義詞。
 
cc) 函數ORD(str )
 
函數使用說明:若字符串str的最左字符是一個多字節字符,則返回該字符的代碼,代碼的計算通過使用以下公式計算其組成字節的數值而得出:
 
       
 
(1st byte code)
 
    
 
+ (2nd byte code × 256)
 
    
 
+ (3rd byte code × 2562
 
) ...
 
假如最左字符不是一個多字節字符,那麼 ORD()和函數ASCII()返回相同的值
 
dd) 函數 POSITION(substr IN str )
 
函數使用說明:POSITION(substr IN str )是 LOCATE(substr ,str )同義詞
 
ee) 函數QUOTE(str )
 
函數使用說明:引證一個字符串,由此產生一個在SQL語句中可用作完全轉義數據值的結果。 返回的字符串由單引號標注,每例都帶有單引號 (‘'’)、反斜線符號 (‘\’)、 ASCII NUL以及前面有反斜線符號的Control-Z。如果自變量的值為NULL,則返回不帶單引號的單詞“NULL”。
 
ff) 函數REPEAT(str ,count )
 
函數使用說明:返回一個由重復的字符串str組成的字符串,字符串str的數目等於count。若 count <= 0,則返回一個空字符串。若str或 count為 NULL,則返回 NULL。
 
gg) 函數REPLACE(str ,from_str ,to_str )
 
函數使用說明:返回字符串str以及所有被字符串to_str替代的字符串from_str。
 
hh) 函數REVERSE(str )
 
函數使用說明:返回字符串 str,順序和字符順序相反。
 
ii) 函數RIGHT(str ,len )
 
函數使用說明:從字符串str開始,返回最右len字符。
 
jj) 函數RPAD(str ,len ,padstr )
 
函數使用說明:返回字符串str ,其右邊被字符串 padstr填補至len字符長度。假如字符串str的長度大於 len ,則返回值被縮短到與 len字符相同長度
 
kk) 函數RTRIM(str )
 
函數使用說明:返回字符串 str,結尾空格字符被刪去。
 
ll) 函數 SOUNDEX(str )
 
函數使用說明:從str 返回一個soundex 字符串。 兩個具有幾乎同樣探測的字符串應該具有同樣的 soundex 字符串。一個標准的soundex字符串的長度為4個字符,然而SOUNDEX()函數會返回一個人以長度的字符串。可使用結果中的SUBSTRING() 來得到一個標准 soundex 字符串。在str 中, 會忽略所有未按照字母順序排列的字符。所有不在A-Z 范圍之內的國際字母符號被視為元音字母。
 
mm) 函數expr1 SOUNDS LIKE expr2
 
函數使用說明: 這相當於SOUNDEX(expr1 ) = SOUNDEX(expr2 ) 。
 
nn) 函數SPACE(N )
 
函數使用說明:返回一個由N間隔符號組成的字符串
 
oo) 函數SUBSTRING(str ,pos ) , SUBSTRING(str FROM pos ) SUBSTRING(str ,pos ,len ) , SUBSTRING(str FROM pos FOR len )
 
函數使用說明:不帶有len參數的格式從字符串str返回一個子字符串,起始於位置 pos。帶有len參數的格式從字符串str返回一個長度同len字符相同的子字符串,起始於位置 pos。使用 FROM的格式為標准 SQL語法。也可能對pos使用一個負值。假若這樣,則子字符串的位置起始於字符串結尾的pos字符,而不是字符串的開頭位置。在以下格式的函數中可以對pos 使用一個負值。
 
pp) 函數SUBSTRING_INDEX(str ,delim ,count )
 
函數使用說明:在定界符 delim以及count出現前,從字符串str返回自字符串。若count為正值,則返回最終定界符(從左邊開始)左邊的一切內容。若count為負值,則返回定界符(從右邊開始)右邊的一切內容。
 
qq) 函數 TRIM([{BOTH | LEADING | TRAILING} [remstr ] FROM] str ) TRIM(remstr FROM] str )
 
函數使用說明:返回字符串 str,其中所有remstr前綴和/或後綴都已被刪除。若分類符BOTH、LEADIN或TRAILING中沒有一個是給定的,則假設為BOTH。 remstr為可選項,在未指定情況下,可刪除空格
 
rr) 函數UCASE(str)
 
函數使用說明:UCASE()是UPPER()的同義詞
 
ss) 函數UNCOMPRESS(string_to_uncompress )
 
函數使用說明:對經COMPRESS()函數壓縮後的字符串進行解壓縮。若參數為壓縮值,則結果為 NULL。這個函數要求 MySQL 已被諸如zlib之類的壓縮庫編譯過。否則, 返回值將始終是 NULL
 
tt) 函數 UNCOMPRESSED_LENGTH(compressed_string )
 
函數使用說明: 返回壓縮字符串壓縮前的長度。
 
uu)     函數 UNHEX(str)
 
函數使用說明:執行從 HEX(str )的反向操作。就是說,它將參數中的每一對十六進制數字理解為一個數字,並將其轉化為該數字代表的字符。結果字符以二進制字符串的形式返回
 
vv)     函數 UPPER(str )
 
函數使用說明:返回字符串 str,以及根據最新字符集映射轉化為大寫字母的字符
 
三、 數學函數
 
a)         函數 ABS(X)
 
函數使用說明:返回 X 的絕對值
 
b)        函數 ACOS(X )
 
函數使用說明:返回 X 反余弦 , 即 , 余弦是 X 的值。若 X 不在 -1 到 1 的范圍之內,則返回 NULL 。
 
c)        函數 ASIN( X)
 
函數使用說明:返回X 的反正弦,即,正弦為X 的值。若X   若X不在-1到 1 的范圍之內,則返回 NULL。
 
d)      函數ATAN(X )
 
函數使用說明:返回 X 的反正切,即,正切為 X 的值。
 
e)         函數 ATAN(Y ,X ) , ATAN2(Y ,X )
 
函數使用說明:返回兩個變量 X及 Y的反正切。它類似於 Y或 X的反正切計
 
       算 , 除非兩個參數的符號均用於確定結果所在象限。
 
f)         函數 CEILING(X ) CEIL(X )
 
函數使用說明:返回不小於 X的最小整數值。
 
g)        函數 COS(X )
 
函數使用說明:返回 X 的余弦,其中 X 在弧度上已知。
 
h)        函數 COT(X )
 
函數使用說明:返回 X 的余切
 
i)          函數 CRC32(expr )
 
函數使用說明:計算循環冗余碼校驗值並返回一個 32比特無符號值。若參數為 NULL,則結果為 NULL。該參數應為一個字符串,而且在不是字符串的情況下會被作為字符串處理(若有可能)
 
j)          函數 DEGREES(X )
 
函數使用說明:返回參數 X ,該參數由弧度被轉化為度。
 
k)        函數 EXP(X )
 
函數使用說明:返回 e 的 X 乘方後的值 ( 自然對數的底 ) 。
 
l)          函數 FLOOR(X )
 
函數使用說明:返回不大於 X的最大整數值。
 
m)      函數 FORMAT(X ,D )
 
函數使用說明:將數字 X 的格式寫成 '#,###,###.##' 格式 , 即保留小數點後 D 位,而第 D 位的保留方式為四捨五入,然後將結果以字符串的形式返回
 
n)        函數 LN(X )
 
函數使用說明:返回 X 的自然對數 , 即 , X 相對於基數 e 的對數
 
o)        函數 LOG(X ) LOG(B ,X )
 
函數使用說明:若用一個參數調用,這個函數就會返回 X的自然對數。
 
p)        函數 LOG2(X )
 
函數使用說明:返回 X 的基數為 2 的對數。
 
q)        函數 LOG10(X )
 
函數使用說明:返回 X 的基數為 10 的對數。
 
r)         函數 MOD(N ,M ) , N % M N MOD M
 
函數使用說明: 模操作。返回 N 被 M 除後的余數。
 
s)         函數 PI()
 
函數使用說明:返回 ? (pi) 的值。默認的顯示小數位數是 7 位 ,然而 MySQL內部會使用完全雙精度值。
 
t)          函數 POW(X ,Y ) , POWER(X ,Y )
 
函數使用說明:返回 X 的 Y 乘方的結果值。
 
u)        函數 RADIANS(X )
 
函數使用說明:返回由度轉化為弧度的參數 X , (注意? 弧度等於 180 度)。
 
v)        函數 RAND() RAND(N )
 
函數使用說明:返回一個隨機浮點值 v,范圍在 0到 1之間 ( 即 , 其范圍為 0 ≤ v ≤ 1.0) 。若已指定一個整數參數 N ,則它被用作種子值,用來產生重復序列。
 
w)      函數 ROUND(X ) ROUND(X ,D )
 
函數使用說明:返回參數 X ,其值接近於最近似的整數。在有兩個參數的情況下,返回 X,其值保留到小數點後 D 位,而第 D位的保留方式為四捨五入。若要接保留 X 值小數點左邊的 D 位,可將 D 設為負值。
 
x)        函數 SIGN(X )
 
函數使用說明:返回參數作為 -1、 0或 1的符號,該符號取決於 X的值為負、零或正。
 
y)        函數 SIN(X )
 
函數使用說明:返回 X 正弦,其中 X 在弧度中被給定。
 
z)      函數 SQRT(X )
 
函數使用說明: 返回非負數 X 的二次方根。
 
aa) 函數TAN(X )
 
函數使用說明: 返回 X 的正切,其中 X 在弧度中被給定。
 
bb) 函數TRUNCATE(X ,D )
 
函數使用說明: 返回被捨去至小數點後 D 位的數字 X 。若 D 的值為 0, 則結果
 
不帶有小數點或不帶有小數部分。可以將 D設為負數 ,若要截去 (歸零 ) X小數點左起第 D位開始後面所有低位的值
 
四、           日期和時間函數
 
a)      函數ADDDATE(date ,INTERVAL expr type ) ADDDATE(expr ,days )
 
函數使用說明: 當被第二個參數的 INTERVAL 格式激活後, ADDDATE() 就是 DATE_ADD() 的同義詞。相關函數 SUBDATE() 則是 DATE_SUB() 的同義詞。對於 INTERVAL 參數上的信息 ,請參見關於 DATE_ADD() 的論述。
 
b)        函數 ADDTIME(expr ,expr2 )
 
函數使用說明: ADDTIME()將 expr2添加至 expr然後返回結果。 expr是一個時間或時間日期表達式,而 expr2是一個時間表達式。
 
c)      函數 CONVERT_TZ(dt ,from_tz ,to_tz )
 
函數使用說明: CONVERT_TZ()將時間日期值 dt從 from_tz 給出的時區轉到 to_tz給出的時區,然後返回結果值。關於可能指定的時區的詳細論述,若自變量無效,則這個函數會返回 NULL
 
d)        函數 CURDATE()
 
函數使用說明:將當前日期按照 'YYYY-MM-DD'或 YYYYMMDD格式的值返回,具體格式根據函數用在字符串或是數字語境中而定。
 
e)         函數 CURRENT_DATE CURRENT_DATE()
 
函數使用說明: CURRENT_DATE和 CURRENT_DATE()是的同義詞 .
 
f)      函數 CURTIME()
 
函數使用說明: 將當前時間以 'HH:MM:SS' 或 HHMMSS 的格式返回, 具體格式根據函數用在字符串或是數字語境中而定。
 
g)      函數 CURRENT_TIME, CURRENT_TIME()
 
函數使用說明: CURRENT_TIME和 CURRENT_TIME()是 CURTIME()的同義詞。
 
h)      函數 CURRENT_TIMESTAMP, CURRENT_TIMESTAMP()
 
函數使用說明: CURRENT_TIMESTAMP和 CURRENT_TIMESTAMP()是 NOW() 的同義詞
 
i)      函數 DATE(expr )
 
函數使用說明: 提取日期或時間日期表達式 expr 中的日期部分。
 
j)          函數 DATEDIFF(expr ,expr2 )
 
函數使用說明: DATEDIFF()返回起始時間 expr和結束時間 expr2 之間的天數。 Expr和 expr2 為日期或 date-and-time表達式。計算中只用到這些值的日期部分。
 
k)        函數 DATE_ADD(date ,INTERVAL expr type ) DATE_SUB(date ,INTERVAL expr type )
 
函數使用說明:這些函數執行日期運算。 date是一個 DATETIME或 DATE值,用來指定起始時間。 expr是一個表達式,用來指定從起始日期添加或減去的時間間隔值。   Expr 是一個字符串 ;對於負值的時間間隔,它可以以一個‘-’ 開頭。 type為關鍵詞,它指示了表達式被解釋的方式。
 
l)          函數 DATE_FORMAT(date ,format )
 
函數使用說明:根據 format字符串安排 date值的格式。
 
m)      函數 DAY(date )
 
函數使用說明: DAY()和 DAYOFMONTH()的意義相同
 
n)        函數 DAYNAME(date )
 
函數使用說明:返回 date對應的工作日名稱。
 
o)        函數 DAYOFMONTH(date )
 
函數使用說明:返回 date對應的該月日期,范圍是從 1到 31
 
p)        函數 DAYOFWEEK(date )
 
函數使用說明:返回 date (1 =周日 , 2 =周一 , ..., 7 = 周六 )對應的工作日索引。這些索引值符合 ODBC 標准
 
q)        函數 DAYOFYEAR(date )
 
函數使用說明:返回date對應的一年中的天數,范圍是從 1到366 。
 
r)         函數 EXTRACT(type FROM date )
 
函數使用說明: EXTRACT()函數所使用的時間間隔類型說明符同 DATE_ADD()或 DATE_SUB() 的相同 ,但它從日期中提取其部分,而不是執行日期運算。
 
s)      函數FROM_DAYS(N )
 
函數使用說明: 給定一個天數   N , 返回一個 DATE 值。
 
t)          函數 FROM_UNIXTIME(unix_timestamp )ROM_UNIXTIME(unix_timestamp ,format )
 
函數使用說明:返回'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS格式值的unix_timestamp參數表示,具體格式取決於該函數是否用在字符串中或是數字語境中。若format 已經給出,則結果的格式是根據format字符串而定。 format 可以包含同DATE_FORMAT()函數輸入項列表中相同的說明符。
 
u)        函數 GET_FORMAT(DATE|TIME|DATETIME, 'EUR'|'USA'|'JIS'|'ISO'|'INTERNAL')
 
函數使用說明:返回一個格式字符串。這個函數在同 DATE_FORMAT()及 STR_TO_DATE()函數結合時很有用
 
v)        函數 HOUR(time )
 
函數使用說明:返回 time對應的小時數。對於日時值的返回值范圍是從 0到 23
 
w)      函數 LAST_DAY(date )
 
函數使用說明:獲取一個日期或日期時間值,返回該月最後一天對應的值。若參數無效,則返回 NULL。
 
x)        函數 LOCALTIME, LOCALTIME()
 
函數使用說明: LOCALTIME及 LOCALTIME()和 NOW() 具有相同意義。
 
y)      函數 LOCALTIMESTAMP, LOCALTIMESTAMP()
 
函數使用說明: LOCALTIMESTAMP和 LOCALTIMESTAMP()和 NOW()具有相同意義。
 
z)         函數 MAKEDATE(year ,dayofyear )
 
函數使用說明:給出年份值和一年中的天數值,返回一個日期。 dayofyear必須大於 0,否則結果為 NULL。
 
aa) 函數 MAKETIME(hour ,minute ,second )
 
函數使用說明: 返回由 hour 、 minute 和 second 參數計算得出的時間值
 
bb)     函數 CROSECOND(expr )
 
函數使用說明:從時間或日期時間表達式 expr返回微秒值,其數字范圍從 0到 999999。
 
cc)     函數 MINUTE(time )
 
函數使用說明:返回 time對應的分鐘數 ,范圍是從 0 到 59。
 
dd)     函數 MONTH(date )
 
函數使用說明:返回 date對應的月份,范圍時從 1到 12 。
 
ee) 函數 MONTHNAME(date )
 
函數使用說明: 返回 date 對應月份的全名
 
ff)       函數 NOW()
 
函數使用說明:返回當前日期和時間值,其格式為 'YYYY-MM-DD HH:MM:SS'或 YYYYMMDDHHMMSS, 具體格式取決於該函數是否用在字符串中或數字語境中。
 
gg)     函數 PERIOD_ADD(P ,N )
 
函數使用說明:添加 N 個月至周期 P ( 格式為 YYMM 或 YYYYMM) ,返回值的格式為 YYYYMM 。注意周期參數 P 不是 日期值。 
 
hh)     函數 PERIOD_DIFF(P1 ,P2 )
 
函數使用說明:返回周期 P1和 P2之間的月份數。 P1和 P2的格式應該為 YYMM或 YYYYMM。注意周期參數 P1和 P2不是 日期值。
 
ii)         函數 QUARTER(date )
 
函數使用說明:返回 date對應的一年中的季度值,范圍是從 1到 4
 
jj)         函數 SECOND(time )
 
函數使用說明:返回 time對應的秒數 ,范圍是從 0到 59。
 
kk) 函數 SEC_TO_TIME(seconds )
 
函數使用說明: 返回被轉化為小時、 分鐘和秒數的 seconds 參數值 , 其格式為 'HH:MM:SS' 或 HHMMSS ,具體格式根據該函數是否用在字符串或數字語境中而定
 
ll) 函數 STR_TO_DATE(str ,format )
 
函數使用說明:這是 DATE_FORMAT()函數的倒轉。它獲取一個字符串 str和一個格式字符串 format。若格式字符串包含日期和時間部分,則 STR_TO_DATE()返回一個 DATETIME 值,若該字符串只包含日期部分或時間部分,則返回一個 DATE 或 TIME 值。
 
mm) 函數 SUBDATE(date ,INTERVAL expr type ) SUBDATE(expr ,days )
 
函數使用說明:當被第二個參數的 INTERVAL型式調用時 , SUBDATE()和 DATE_SUB() 的意義相同。對於有關 INTERVAL參數的信息, 見有關 DATE_ADD()的討論。
 
nn)     函數 SUBTIME(expr ,expr2 )
 
函數使用說明: SUBTIME()從 expr中提取 expr2,然後返回結果。 expr是一個時間或日期時間表達式,而 xpr2是一個時間表達式。
 
oo)     函數 SYSDATE()
 
函數使用說明:返回當前日期和時間值,格式為 'YYYY-MM-DD HH:MM:SS'或 YYYYMMDDHHMMSS, 具體格式根據函數是否用在字符串或數字語境而定。
 
pp)     函數 TIME(expr )
 
函數使用說明:提取一個時間或日期時間表達式的時間部分,並將其以字符串形式返回。
 
qq)     函數 TIMEDIFF(expr ,expr2 )
 
函數使用說明: TIMEDIFF()返回起始時間 expr和結束時間 expr2 之間的時間。 expr和 expr2 為時間或 date-and-time表達式 , 兩個的類型必須一樣。 
 
rr) 函數TIMESTAMP(expr ) , TIMESTAMP(expr ,expr2 )
 
函數使用說明: 對於一個單參數 , 該函數將日期或日期時間表達式 expr 作為日期時間值返回 . 對於兩個參數 ,它將時間表達式 expr2添加到日期或日期時間表達式 expr中,將 theresult作為日期時間值返回。
 
ss)      函數 TIMESTAMPADD(interval ,int_expr ,datetime_expr )
 
函數使用說明:將整型表達式int_expr添加到日期或日期時間表達式 datetime_expr中。 int_expr 的單位被時間間隔參數給定,該參數必須是以下值的其中一個: FRAC_SECOND、SECOND、 MINUTE、 HOUR、 DAY、 WEEK、 MONTH、 QUARTER或 YEAR。可使用所顯示的關鍵詞指定Interval值,或使用SQL_TSI_ 前綴。例如, DAY或SQL_TSI_DAY 都是正確的
 
tt)        函數 TIMESTAMPDIFF(interval ,datetime_expr1 ,datetime_expr2 )
 
函數使用說明:返回日期或日期時間表達式 datetime_expr1和 datetime_expr2 the之間的整數差。其結果的單位由 interval 參數給出。 interval的法定值同 TIMESTAMPADD() 函數說明中所列出的相同。
 
uu)     函數 TIME_FORMAT(time ,format )
 
函數使用說明:其使用和 DATE_FORMAT()函數相同 ,然而 format字符串可能僅會包含處理小時、分鐘和秒的格式說明符。其它說明符產生一個 NULL值或 0。
 
vv)     函數 TIME_TO_SEC(time )
 
函數使用說明:返回已轉化為秒的 time參數
 
ww) 函數 TO_DAYS(date )
 
函數使用說明:給定一個日期 date ,返回一個天數 (從年份 0 開始的天數 )。
 
xx)     函數 UNIX_TIMESTAMP(), UNIX_TIMESTAMP(date )
 
函數使用說明:若無參數調用,則返回一個 Unix timestamp ('1970-01-01 00:00:00' GMT之後的秒數 )作為無符號整數。若用 date來調用 UNIX_TIMESTAMP(),它會將參數值以 '1970-01-01 00:00:00' GMT 後的秒數的形式返回。 date可以是一個 DATE 字符串、一個 DATETIME字符串、一個 TIMESTAMP 或一個當地時間的 YYMMDD 或 YYYMMDD 格式的數字。
 
yy) 函數 UTC_DATE, UTC_DATE()
 
函數使用說明:返回當前 UTC日期值,其格式為 'YYYY-MM-DD'或 YYYYMMDD,具體格式取決於函數是否用在字符串或數字語境中。
 
zz)      函數 UTC_TIME, UTC_TIME()
 
函數使用說明:返回當前 UTC值,其格式為   'HH:MM:SS'或 HHMMSS,具體格式根據該函數是否用在字符串或數字語境而定。
 
aaa)   函數 UTC_TIMESTAMP, UTC_TIMESTAMP()
 
函數使用說明:返回當前 UTC日期及時間值,格式為 'YYYY-MM-DD HH:MM:SS'或 YYYYMMDDHHMMSS,具體格式根據該函數是否用在字符串或數字語境而定
 
bbb) 函數 WEEK(date [,mode ])
 
函數使用說明:該函數返回 date對應的星期數。 WEEK()的雙參數形式允許你指定該星期是否起始於周日或周一,以及返回值的范圍是否為從 0到 53或從 1 到 53。若 mode 參數被省略,則使用 default_week_format系統自變量的值。
 
ccc) 函數 WEEKDAY(date )
 
函數使用說明:返回 date (0 =周一 , 1 =周二 , ... 6 = 周日 )對應的工作日索引   weekday index for
 
ddd) 函數 WEEKOFYEAR(date )
 
函數使用說明:將該日期的陽歷周以數字形式返回,范圍是從 1到 53。它是一個兼容度函數,相當於 WEEK(date ,3)。
 
eee)   函數 YEAR(date )
 
函數使用說明:返回 date對應的年份 ,范圍是從 1000到 9999。
 
fff)    函數 YEARWEEK(date ), YEARWEEK(date ,start )
 
函數使用說明:返回一個日期對應的年或周。 start參數的工作同 start參數對 WEEK()的工作相同。結果中的年份可以和該年的第一周和最後一周對應的日期參數有所不同。
 
五、 全文搜索功能函數
 
a)         函數 MATCH (col1,col2,...) AGAINST (expr [IN BOOLEAN MODE | WITH QUERY EXPANSION])
 
六、 加密函數
 
a)         函數 AES_ENCRYPT(str ,key_str ) , AES_DECRYPT(crypt_str ,key_str )
 
函數使用說明:這些函數允許使用官方 AES進行加密和數據加密 (高級加密標准 )算法 ,即以前人們所熟知的“Rijndael”。保密關鍵字的長度為 128比特,不過你可以通過改變源而將其延長到 256比特。我們選擇了 128 比特的原因是它的速度要快得多,且對於大多數用途而言這個保密程度已經夠用。
 
b)      函數DECODE(crypt_str ,pass_str )
 
函數使用說明:使用 pass_str作為密碼,解密加密字符串 crypt_str, crypt_str應該是由 ENCODE()返回的字符串。
 
c)        函數 ENCODE(str ,pass_str )
 
函數使用說明:使用 pass_str作為密碼,解密 str。 使用 DECODE()解密結果。
 
d)        函數 DES_DECRYPT(crypt_str [,key_str ])
 
函數使用說明:使用 DES_ENCRYPT()加密一個字符串。若出現錯誤,這個函數會返回 NULL。
 
e)         函數 DES_ENCRYPT(str [,(key_num |key_str )])
 
函數使用說明:用 Triple-DES算法給出的關鍵字加密字符串。若出現錯誤,這個函數會返回 NULL。
 
f)         函數 ENCRYPT(str [,salt ])
 
函數使用說明:使用 Unix crypt()系統調用加密 str。 salt 參數應為一個至少包含 2個字符的字符串。若沒有給出 salt 參數,則使用任意值。
 
g)        函數 MD5(str )
 
函數使用說明:為字符串算出一個 MD5 128比特檢查和。該值以 32位十六進制數字的二進制字符串的形式返回 ,若參數為 NULL則會返回 NULL。例如,返回值可被用作散列關鍵字
 
h)        函數 OLD_PASSWORD(str )
 
函數使用說明:當 PASSWORD()的執行變為改善安全性時, OLD_PASSWORD()會被添加到 MySQL 。 OLD_PASSWORD()返回從前的 PASSWORD() 執行值 ( 4.1 之前 ) ,同時允許你為任何 4.1 之前的需要連接到你的 5.1 版本 MySQL 服務器前客戶端設置密碼,從而不至於將它們切斷
 
i)      函數PASSWORD(str )
 
函數使用說明:從原文密碼str計算並返回密碼字符串,當參數為 NULL時返回 NULL 。這個函數用於用戶授權表的Password列中的加密MySQL 密碼存儲
 
七、 信息函數
 
a)         函數 BENCHMARK(count ,expr )
 
函數使用說明: BENCHMARK()函數重復 count次執行表達式 expr 。它可以被用於計算   MySQL 處理表達式的速度。結果值通常為 0。另一種用處來自 mysql客戶端內部 ,能夠報告問詢執行的次數
 
b)        函數 CHARSET(str )
 
函數使用說明:返回字符串自變量的字符集。
 
c)        函數 COERCIBILITY(str )
 
函數使用說明:返回字符串自變量的整序可壓縮性值。
 
d)      函數 COLLATION(str )
 
函數使用說明:返回惠字符串參數的排序方式。
 
e)         函數 CONNECTION_ID()
 
函數使用說明:返回對於連接的連接 ID (線程 ID)。每個連接都有各自的唯一 ID。
 
f)         函數 CURRENT_USER, CURRENT_USER()
 
函數使用說明:返回當前話路被驗證的用戶名和主機名組合。這個值符合確定你的存取權限的 MySQL賬戶。在被指定 SQL SECURITY DEFINER特征的存儲程序內, CURRENT_USER() 返回程序的創建者
 
g)        函數 DATABASE()
 
函數使用說明:返回使用 utf8字符集的默認 (當前 ) 數據庫名。在存儲程序裡,默認數據庫是同該程序向關聯的數據庫,但並不一定與調用語境的默認數據庫相同。
 
h)        函數 FOUND_ROWS()
 
函數使用說明: A SELECT語句可能包括一個 LIMIT子句,用來限制服務器返回客戶端的行數。在有些情況下,需要不用再次運行該語句而得知在沒有 LIMIT時到底該語句返回了多少行。為了知道這個行數 ,包括在 SELECT 語句中選擇   SQL_CALC_FOUND_ROWS,隨後調用 FOUND_ROWS()
 
i)      函數 LAST_INSERT_ID() LAST_INSERT_ID(expr )
 
函數使用說明:自動返回最後一個 INSERT或 UPDATE問詢為 AUTO_INCREMENT列設置的第一個發生的值。
 
j)      函數 ROW_COUNT()
 
函數使用說明: ROW_COUNT()返回被前面語句升級的、插入的或刪除的行數。這個行數和 mysql 客戶端顯示的行數及 mysql_affected_rows() C API函數返回的值相同。
 
k)      函數 SCHEMA()
 
函數使用說明:這個函數和 DATABASE()具有相同的意義
 
l)          函數 SESSION_USER()
 
函數使用說明: SESSION_USER()和 USER()具有相同的意義。
 
m)      函數 SYSTEM_USER()
 
函數使用說明: SYSTEM_USER()合 USER()具有相同的意義
 
n)        函數 USER()
 
函數使用說明:返回當前 MySQL用戶名和機主名
 
o)      函數 VERSION()
 
函數使用說明:返回指示 MySQL服務器版本的字符串。這個字符串使用 utf8字符集。
 
八、 其他函數
 
a)         函數 DEFAULT(col_name )
 
函數使用說明:返回一個表列的默認值。若該列沒有默認值則會產生錯誤。
 
b)        函數 FORMAT(X ,D )
 
函數使用說明:將數字 X 的格式寫為 '#,###,###.##', 以四捨五入的方式保留小數點後 D位,並將結果以字符串的形式返回。若   D為 0,則返回結果不帶有小數點,或不含小數部分。
 
c)        函數 GET_LOCK(str ,timeout )
 
函數使用說明:設法使用字符串 str給定的名字得到一個鎖,超時為 timeout 秒。若成功得到鎖,則返回 1,若操作超時則返回 0 ( 例如 ,由於另一個客戶端已提前封鎖了這個名字 ), 若發生錯誤則返回 NULL (諸如缺乏記憶或線程 mysqladmin kill被斷開 ) 。假如你有一個用 GET_LOCK()得到的鎖,當你執行 RELEASE_LOCK()或你的連接斷開 ( 正常或非正常 )時,這個鎖就會解除
 
d)        函數 INET_ATON(expr )
 
函數使用說明:給出一個作為字符串的網絡地址的點地址表示,返回一個代表該地址數值的整數。地址可以是 4或 8比特地址。
 
e)         函數 INET_NTOA(expr )
 
函數使用說明:給定一個數字網絡地址 (4或 8比特 ),返回作為字符串的該地址的電地址表示
 
f)         函數 IS_FREE_LOCK(str )
 
函數使用說明:檢查名為 str的鎖是否可以使用 (換言之 , 沒有被封鎖 )。若鎖可以使用,則返回   1 ( 沒有人在用這個鎖 ),若這個鎖正在被使用,則返回 0,出現錯誤則返回 NULL ( 諸如不正確的參數 ) 。
 
g)        函數 IS_USED_LOCK(str )
 
函數使用說明:檢查名為 str的鎖是否正在被使用 (換言之 , 被封鎖 )。若被封鎖,則返回使用該鎖的客戶端的連接標識符。否則返回 NULL 。
 
h)      函數 MASTER_POS_WAIT(log_name ,log_pos [,timeout ])
 
函數使用說明:該函數對於控制主從同步很有用處。它會持續封鎖,直到從設備閱讀和應用主機記錄中所有補充資料到指定的位置。返回值是其為到達指定位置而必須等待的記錄事件的數目。若從設備 SQL線程沒有被啟動、從設備主機信息尚未初始化、參數不正確或出現任何錯誤,則該函數返回 NULL。若超時時間被超過,則返回 -1 。若在 MASTER_POS_WAIT()等待期間,從設備 SQL線程中止,則該函數返回 NULL 。若從設備由指定位置通過,則函數會立即返回結果。
 
i)          函數 NAME_CONST(name ,value )
 
函數使用說明:返回給定值。當用來產生一個結果集合列時 , NAME_CONST()促使該列使用給定名稱。
 
j)          函數 RELEASE_LOCK(str )
 
函數使用說明:解開被 GET_LOCK()獲取的,用字符串 str所命名的鎖。若鎖被解開,則返回   1 ,若改線程尚未創建鎖,則返回 0 (此時鎖沒有被解開 ),若命名的鎖不存在,則返回 NULL。若該鎖從未被對 GET_LOCK()的調用獲取,或鎖已經被提前解開,則該鎖不存在。
 
k)        函數 SLEEP(duration )
 
函數使用說明:睡眠 ( 暫停 ) 時間為 duration 參數給定的秒數,然後返回 0 。若 SLEEP() 被中斷 , 它會返回 1 。 duration 或許或包括一個給定的以微秒為單位的分數部分。
 
l)          函數 UUID()
 
函數使用說明:返回一個通用唯一標識符 (UUID), UUID被設計成一個在時間和空間上都獨一無二的數字。 2個對 UUID()的調用應產生 2個不同的值,即使這些調用的執行是在兩個互不相連的單獨電腦上進行。
 
m)      函數 VALUES(col_name )
 
函數使用說明:在一個 INSERT… ON DUPLICATE KEY UPDATE… 語句中,你可以在 UPDATE子句中使用 VALUES(col_name )函數,用來訪問來自該語句的 INSERT 部分的列值。換言之, UPDATE子句中的 VALUES(col_name )訪問需要被插入的 col_name 的值 , 並不會發生重復鍵沖突。這個函數在多行插入中特別有用。   VALUES()函數只在 INSERT ... UPDATE語句中有意義,而在其它情況下只會返回 NULL
 
 
九、 聚合函數
 
a)         函數 AVG([DISTINCT] expr )
 
函數使用說明:返回 expr的平均值。 DISTINCT選項可用於返回 expr的不同值的平均值。
 
b)        函數 BIT_AND(expr )
 
函數使用說明:返回expr中所有比特的 bitwise AND。計算執行的精確度為64 比特(BIGINT)。若找不到匹配的行,則這個函數返回18446744073709551615 。(這是無符號 BIGINT值,所有比特被設置為 1)。
 
c)      函數 BIT_OR(expr )
 
函數使用說明:返回expr中所有比特的bitwise OR。計算執行的精確度為64 比特(BIGINT)。若找不到匹配的行,則函數返回 0 。
 
d)      函數BIT_XOR(expr )
 
函數使用說明:返回expr中所有比特的bitwise XOR。計算執行的精確度為64 比特(BIGINT)。若找不到匹配的行,則函數返回 0 。
 
e)         函數 COUNT(expr )
 
函數使用說明:返回SELECT語句檢索到的行中非NULL值的數目。若找不到匹配的行,則COUNT() 返回 0
 
f)         函數 COUNT(DISTINCT expr ,[expr ...])
 
函數使用說明:返回不同的非NULL值數目。若找不到匹配的項,則COUNT(DISTINCT)返回 0
 
g)        函數 GROUP_CONCAT(expr )
 
函數使用說明:該函數返回帶有來自一個組的連接的非NULL值的字符串結果。其完整的語法如下所示:
 
GROUP_CONCAT([DISTINCT] expr [,expr ...]
 
[ORDER BY {unsigned_integer | col_name | expr }
 
                 [ASC | DESC] [,col_name ...]]
 
             [SEPARATOR str_val ])
 
h)        函數 MIN([DISTINCT] expr ), MAX([DISTINCT] expr )
 
函數使用說明:返回 expr的最小值和最大值。 MIN()和 MAX()的取值可以是一個字符串參數;在這些情況下,它們返回最小或最大字符串值。
 
i)          函數 STD(expr ) STDDEV(expr )
 
函數使用說明:返回 expr的總體標准偏差。這是標准 SQL的延伸。這個函數的 STDDEV()形式用來提供和 Oracle的兼容性。可使用標准 SQL函數 STDDEV_POP()進行代替
 
j)          函數 STDDEV_POP(expr )
 
函數使用說明:返回expr的總體標准偏差(VAR_POP()的平方根) 。你也可以使用 STD()或STDDEV(), 它們具有相同的意義,然而不是標准的 SQL。若找不到匹配的行,則STDDEV_POP() 返回 NULL
 
k)        函數 STDDEV_SAMP(expr )
 
函數使用說明:返回expr的樣本標准差 ( VAR_SAMP()的平方根) 。若找不到匹配的行,則STDDEV_SAMP()返回 NULL
 
l)          函數 SUM([DISTINCT] expr )
 
函數使用說明:返回expr的總數。若返回集合中無任何行,則 SUM()返回NULL。DISTINCT關鍵詞可用於 MySQL 5.1中,求得expr 不同值的總和。若找不到匹配的行,則SUM() 返回 NULL
 
m)      函數 VAR_POP(expr )
 
函數使用說明:返回 expr總體標准方差。它將行視為總體,而不是一個樣本,所以它將行數作為分母。你也可以使用 VARIANCE(), 它具有相同的意義然而不是標准的 SQL
 
n)        函數 VAR_SAMP(expr )
 
函數使用說明:返回expr的樣本方差。更確切的說,分母的數字是行數減去1。若找不到匹配的行,則VAR_SAMP() 返回NULL
 
o)      函數VARIANCE(expr )
 
函數使用說明:返回expr的總體標准方差。這是標准SQL的延伸。可使用標准SQL 函數 VAR_POP()進行代替。若找不到匹配的項,則VARIANCE() 返回NULL
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved