Mysql內建函式
從網上找來彙總的。
數學函式:
ABS(X)
返回 X 的絕對值
ACOS(X )
返回 X 反餘弦 , 即 , 餘弦是 X 的值。若 X 不在 -1 到 1 的範圍之內,則返回 NULL 。
ASIN ( X )
返回X 的反正弦,即,正弦為X 的值。若X 若X 不在-1 到 1 的範圍之內,則返回 NULL 。
ATAN(X )
返回 X 的反正切,即,正切為 X 的值。
ATAN(Y, X ) , ATAN2(Y, X)
返回兩個變數 X 及 Y 的反正切。 它類似於 Y 或 X 的反正切計
算 , 除非兩個引數的符號均用於確定結果所在象限。
CEILING(X ),CEIL(X )
返回不小於 X 的最小整數值。即向上取整。
COS(X )
返回 X 的餘弦,其中 X 在弧度上已知。
COT(X )
返回 X 的餘切
CRC32(expr )
計算迴圈冗餘碼校驗值並返回一個 32 位元無符號值。若引數為 NULL ,則結果為 NULL 。該引數應為一個字串,而且在不是字串的情況下會被作為字串處理(若有可能)
DEGREES(X )
返回引數 X , 該引數由弧度被轉化為度。
EXP(X )
返回 e 的 X 乘方後的值 ( 自然對數的底 ) 。
FLOOR(X )
返回不大於 X 的最大整數值 。即向下取整。
FORMAT(X, D)
將數字 X 的格式寫成 ‘#,###,###.##’ 格式 , 即保留小數點後 D 位,而第 D 位的保留方式為四捨五入,然後將結果以字串的形式返回。
LN(X )
返回 X 的自然對數 , 即 , X 相對於基數 e 的對數
LOG(X ), LOG(B, X)
若用一個引數呼叫,這個函式就會返回 X 的自然對數。
LOG2(X )
返回 X 的基數為 2 的對數。
LOG10(X )
返回 X 的基數為 10 的對數。
MOD(N ,M )
模操作。返回 N 被 M 除後的餘數。
跟 N % M
和 N MOD M
PI()
返回 ϖ (pi) 的值。預設的顯示小數位數是 7 位 , 然而 MySQL 內部會使用完全雙精度值。
POW(X ,Y ) , POWER(X ,Y )
返回 X 的 Y 乘方的結果值。
RADIANS(X )
返回由度轉化為弧度的引數 X , ( 注意 ϖ 弧度等於 180 度)。
RAND(),RAND(N )
返回一個隨機浮點值 v ,範圍在 0 到 1 之間 ( 即 , 其範圍為 0 ≤ v ≤ 1.0) 。若已指定一個整數引數 N ,則它被用作種子值,用來產生重複序列。
ROUND(X ) , ROUND(X ,D )
返回引數 X , 其值接近於最近似的整數。在有兩個引數的情況下,返回 X ,其值保留到小數點後 D 位,而第 D 位的保留方式為四捨五入。若要接保留 X 值小數點左邊的 D 位,可將 D 設為負值。
SIGN(X )
返回引數作為 -1 、 0 或 1 的符號,該符號取決於 X 的值為負、零或正。
SIN(X )
返回 X 正弦,其中 X 在弧度中被給定。
SQRT(X )
返回非負數 X 的二次方根。
TAN(X )
返回 X 的正切,其中 X 在弧度中被給定。
TRUNCATE(X ,D )
返回被捨去至小數點後 D 位的數字 X 。若 D 的值為 0, 則結果
不帶有小數點或不帶有小數部分。可以將 D 設為負數 , 若要截去 ( 歸零 ) X 小數點左起第 D 位開始後面所有低位的值
字串函式:
ASCII(str)
返回字串str的第一個字元的ASCII值。如果str是空字串,返回0;如果是NULL,則返回NULL。
ORD(str)
如果字串str最左面字元是一個多位元組字元,通過以格式((first byte ASCII code)*256+(second byte ASCII code))[*256+third byte ASCII code…]返回字元的ASCII程式碼值來返回多位元組字元程式碼。如果最左面的字元不是一個多位元組字元。返回與ASCII()函式返回的相同值。
CONV(N,from_base,to_base)
在不同的數字基之間變換數字。返回數字N的字串數字,從from_base基變換為to_base基,如果任何引數是NULL,返回NULL。引數N解釋為一個整數,但是可以指定為一個整數或一個字串。最小基是2且最大的基是36。如果to_base是一個負數,N被認為是一個有符號數,否則,N被當作無符號數。 CONV以64位點精度工作。
BIN(N)
數值N轉換為二進位制字串,在此N是一個長整型(BIGINT)數字,這等價於CONV(N,10,2)。如果N是NULL,返回NULL。
OCT(N)
數值N轉換為八進位制字串,在此N是一個長整型(BIGINT)數字,這等價於CONV(N,10,8)。如果N是NULL,返回NULL。
HEX(N)
數值N轉換為十六進位制字串,在此N是一個長整型(BIGINT)數字,這等價於CONV(N,10,16)。如果N是NULL,返回NULL。
UNHEX(str)
執行從 HEX(str ) 的反向操作。就是說,它將引數中的每一對十六進位制數字理解為一個數字,並將其轉化為該數字代表的字元,結果字元以二進位制字串的形式返回。
CHAR(N,…)
CHAR()將引數解釋為整數並且返回由這些整數的ASCII程式碼字元組成的一個字串。NULL值被跳過。
CONCAT(str1,str2,…)
連結引數為一個字串。如果任何引數是NULL,返回NULL。可以有超過2個的引數。一個數字引數被變換為等價的字串形式。
select concat(1,’,’,2,’,’,3) => 1,2,3
CONCAT_WS(separator ,str1 ,str2 ,…)
連線字串,每個字串之間的分隔符都是separator。如果引數separator是NULL,返回NULL。函式會忽略任何分隔符引數後的 NULL 值。
select concat_ws(‘,’,1,2,3) => 1,2,3
LENGTH(str)
返回引數佔用位元組長度。如果引數是NULL,返回NULL。引數為整數變換為等價的字串形式。
OCTET_LENGTH(str)
返回引數佔用位元組長度。
和LENGTH(str)是同義詞。
CHAR_LENGTH(str)
返回字串str的長度。多位元組的字元同樣只計算一個長度。
CHARACTER_LENGTH(str)
返回字串str的長度。多位元組的字元同樣只計算一個長度。
和CHAR_LENGTH(str) 是同義詞。
BIT_LENGTH(str)
返回字串str佔用的位數。
ELT(N, str1, str2, str3, …)
若 N = 1 ,則返回值為 str1 ,若 N = 2 ,則返回值為 str2 ,以此類推。 若 N 小於 1 或大於引數的數目,則返回值為 NULL 。
ELT() 是 FIELD() 的補數。
FIELD(str, str1, str2, str3, ……)
返回字元str在str1 , str2 , str3 ,…… 列表中位置。如果找不到 str,返回值為 0 。如果所有對於 FIELD() 的引數均為字串,則所有引數均按照字串進行比較。如果所有的引數均為數字,則按照數字進行比較。否則,引數按照雙倍進行比較。如果 str 為 NULL ,則返回值為 0 ,原因是 NULL 不能同任何值進行同等比較。 FIELD() 是 ELT() 的補數。
EXPORT_SET(bits ,on ,off [,separator [,number_of_bits ]])
返回值為一個字串,其中對於 bits 值中的每個位組,可以得到一個 on 字串,而對於每個清零位元位,可以得到一個 off 字串。 bits 中的位元值按照從右到左的順序接受檢驗 ( 由低位位元到高位位元 ) 。字串被分隔字串分開 ( 預設為逗號 ‘,’) ,按照從左到右的順序被新增到結果中。 number_of_bits 會給出被檢驗的二進位制位數 ( 預設為 64) 。
FIND_IN_SET(str, strlist)
假如字串 str 在由 N 子鏈組成的字串列表 strlist 中, 則返回值的範圍在 1 到 N 之間 。一個字串列表就是一個由一些被‘,’分開的子鏈組成的字串。如果第一個引數是一個常數字符串,而第二個是 type SET 列,則 FIND_IN_SET() 函式被優化,使用位元計算。如果 str 不在 strlist 或 strlist 為空字串,則返回值為 0 。如任意一個引數為 NULL ,則返回值為 NULL 。 這個函式在第一個引數包含一個逗號 (‘,’) 時將無法正常執行。
FORMAT(X ,D )
將 X(number)設定為格式 ‘#,###,###.##’, 以四捨五入的方式保留到小數點後 D 位 , 而返回結果為一個字串。
INSTR(str,substr)
返回字串 str 中子字串的第一個出現位置。這和LOCATE() 的雙引數形式相同,除非引數的順序被顛倒。
LOCATE(substr ,str [, pos])
兩個引數:返回字串 str 中子字串substr 的第一個出現位置。
三個引數:返回字串 str 中子字串substr 的第一個出現位置,起始位置從pos開始。
POSITION(substr IN str)
返回子串substr在字串str第一個出現的位置。
LOCATE(substr ,str ) 的同義詞。
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個字元開始計算,而不是字串的開頭位置。
MID(str ,pos ,len )
MID(str ,pos ,len ) 是 SUBSTRING(str ,pos ,len ) 的同義詞。
SUBSTRING_INDEX(str ,delim ,count )
若count 為正值,則返回第count個delim(從左邊開始)左邊的內容。
若count 為負值,則返回第count個delim(從右邊開始)右邊的一切內容。
RIGHT(str ,len)
返回字串 str 中最右邊的 len 個字元。
LEFT(str ,len)
返回字串 str 中最左邊的 len 個字元。
LOWER(str)
返回字串 str 以及所有根據最新的字符集對映表變為小寫字母的字元。
LCASE(str)
LCASE() 是 LOWER() 的同義詞。
UPPER(str)
返回字串 str 以及所有根據最新的字符集對映表變為大寫字母的字元。
UCASE(str)
UCASE() 是UPPER() 的同義詞。
TRIM(str):預設情況下刪除左邊和右邊的空格。
TRIM(remstr FROM str) :刪除字串str左邊和右邊的remstr。
TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str) :根據BOTH、LEADING 和TRAILING來決定刪除字串str中左右、左邊或者右邊的remstr字元。
LTRIM(str)
刪除字串 str 中左邊的所有空格。
RTRIM(str)
刪除字串 str 中右邊的所有空格。
LPAD(str ,len ,padstr)
返回字串 str , 其左邊由字串 padstr 填補到 len 字元長度。
假如str 的長度大於len , 則返回值被縮短至 len 個字元(從後面截斷)。
RPAD(str ,len ,padstr )
返回字串str , 其右邊被字串 padstr 填補至len 字元長度。
假如str 的長度大於 len , 則返回值被縮短至 len 個字元(從後面截斷)。
SPACE(N)
返回一個由N個空格組成的字串。
REPLACE(str,from_str,to_str)
返回字串str,其中所有的from_str字串都改為to_str字串。
REPEAT(str,count)
返回count次的字串str組成的一個字串。
如果count <= 0,返回一個空字串。如果str或count是NULL,返回NULL。
REVERSE(str)
字串str逆序。
INSERT(str,pos,len,newstr)
返回字串str,從pos起始的len個字串,替換成newstr,newstr的長度大於或小於被替換字串的長度都沒有影響。
SOUNDEX(str )
從str 返回一個soundex 字串。 兩個具有幾乎同樣探測的字串應該具有同樣的 soundex 字串。一個標準的soundex 字串的長度為4 個字元,然而SOUNDEX() 函式會返回一個任意長度的字串。 可使用結果中的SUBSTRING() 來得到一個標準 soundex 字串。在str 中, 會忽略所有未按照字母順序排列的字元。所有不在A-Z 範圍之內的國際字母符號被視為母音字母。
MAKE_SET(bits,str1,str2,…)
返回一個集合 (包含由“,”字元分隔的子串組成的一個字串),由相應的位在bits集合中的的字串組成。str1對應於位0,str2對應位1,等等。在str1, str2, …中的NULL串不新增到結果中。
SELECT MAKE_SET(1,’aa’,’bb’,’cc’) => aa
SELECT MAKE_SET(2,’aa’,’bb’,’cc’) => bb
SELECT MAKE_SET(7,’aa’,’bb’,’cc’) => aa,bb,cc
SELECT MAKE_SET(1 | 2 | 4 ,’aa’,’bb’,’cc’) => aa,bb,cc
EXPORT_SET(bits,on,off,[separator,[number_of_bits]])
返回一個字串,在這裡對於在“bits”中設定每一位,你得到一個“on”字串,並且對於每個復位(reset)的位,你得到一個“off”字串。每個字串用“separator”分隔(預設“,”),並且只有“bits”的“number_of_bits” (預設64)位被使用。
select EXPORT_SET(1,’Y’,’N’,’,’,4) => Y,N,N,N
select EXPORT_SET(7,’Y’,’N’,’,’,4) => Y,Y,Y,N
LOAD_FILE(file_name)
讀取檔案並將這一檔案按照字串的格式返回。 檔案的位置必須在伺服器上 , 你必須為檔案制定路徑全名,而且你還必須擁有 FILE 特許權。檔案必須可讀取,檔案容量必須小於 max_allowed_packet 位元組。若檔案不存在,或因不滿足上述條件而不能被讀取, 則函式返回值為 NULL。
日期和時間函式:
ADDDATE(date, days)
SUBDATE(expr ,days )
在date日期的基礎上增加或減去days天數。日期按照 ‘YYYY-MM-DD’ (預設)或 YYYYMMDD(後面加0)格式的值返回。
select adddate(curdate(),2) => 2016-01-08
ADDDATE(date, INTERVAL expr type )
DATE_ADD(date ,INTERVAL expr type )
SUBDATE(date ,INTERVAL expr type )
DATE_SUB(date ,INTERVAL expr type )
這些函式執行日期運算。 date 是一個 DATETIME 或 DATE 值,用來指定起始時間。 expr 是一個表示式,用來指定從起始日期新增或減去的時間間隔值。 Expr 是一個字串 ; 對於負值的時間間隔,它可以以一個 ‘-’ 開頭。 type 為關鍵詞,它指示了表示式被解釋的方式。
select date_add(curdate(), INTERVAL -2 DAY) => 2016-01-04
select date_sub(curdate(), INTERVAL 2 DAY) => 2016-01-04
補充:type的型別:
MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
SECOND_MICROSECOND
MINUTE_MICROSECOND
MINUTE_SECOND
HOUR_MICROSECOND
HOUR_SECOND
HOUR_MINUTE
DAY_MICROSECOND
DAY_SECOND
DAY_MINUTE
DAY_HOUR
YEAR_MONTH
ADDTIME(expr , expr2 )
SUBTIME(expr ,expr2 )
返回從 expr 增加或減去expr 2的時間。 expr 是一個時間或時間日期表示式,而 expr2 是一個時間表達式,預設為秒數。
select addtime(now(), 300) => 2016-01-06 23:24:27
EXTRACT(type FROM date )
EXTRACT() 函式所使用的時間間隔型別type同 DATE_ADD() 或 DATE_SUB() 的相同 , 但它從日期中提取其部分,而不是執行日期運算。
CONVERT_TZ(dt ,from_tz ,to_tz )
CONVERT_TZ() 將時間日期值 dt 從 from_tz 給出的時區轉到 to_tz 給出的時區,然後返回結果值。關於可能指定的時區的詳細論述,若自變數無效,則這個函式會返回 NULL。
CURDATE(),CURRENT_DATE,CURRENT_DATE()
這三個函式意思相同。
將當前日期按照 ‘YYYY-MM-DD’ 或 YYYYMMDD 格式的值返回,具體格式根據函式用在字串或是數字語境中而定。
select curdate() => 2016-01-06
select curdate()+0 => 20160106
CURTIME(),CURRENT_TIME,CURRENT_TIME()
這三個函式意思相同。
將當前時間以 ‘HH:MM:SS’ 或 HHMMSS 的格式返回, 具體格式根據函式用在字串或是數字語境中而定。
select curtime() => 22:52:57
select curtime()+0 => 225257
NOW()
CURRENT_TIMESTAMP
CURRENT_TIMESTAMP()
LOCALTIMESTAMP
LOCALTIMESTAMP()
這些函式意思相同,都是返回當前日期和時間值,其格式為 ‘YYYY-MM-DD HH:MM:SS’ 或 YYYYMMDDHHMMSS , 具體格式取決於該函式是否用在字串中或數字語境中。
select now() => 2016-01-06 22:55:21
select now()+0 => 20160106225521
DATE(expr)
提取日期或時間日期表示式expr 中的日期部分。其格式為 ‘YYYY-MM-DD HH:MM:SS’ 或 YYYYMMDDHHMMSS , 具體格式取決於該函式是否用在字串中或數字語境中。
select date(now()) => 2016-01-06
select date(now()) + 0 => 20160106
DATEDIFF(expr ,expr2 )
DATEDIFF() 返回起始時間 expr 和結束時間 expr2 之間的天數。Expr 和 expr2 為日期或 date-and-time表示式。計算中只用到這些值的日期部分。
select datediff(now(), ‘20151201’) => 36
DATE_FORMAT(date ,format )
根據 format 字串輸出 date 值的格式。
格式 | 描述 |
---|---|
%a | 縮寫星期名 |
%b | 縮寫月名 |
%c | 月,數值 |
%D | 帶有英文字尾的月中的天 |
%d | 月的天,數值(00-31) |
%e | 月的天,數值(0-31) |
%f | 微秒 |
%H | 小時 (00-23) |
%h | 小時 (01-12) |
%I | 小時 (01-12) |
%i | 分鐘,數值(00-59) |
%j | 年的天 (001-366) |
%k | 小時 (0-23) |
%l | 小時 (1-12) |
%M | 月名 |
%m | 月,數值(00-12) |
%p | AM 或 PM |
%r | 時間,12-小時(hh:mm:ss AM 或 PM) |
%S | 秒(00-59) |
%s | 秒(00-59) |
%T | 時間, 24-小時 (hh:mm:ss) |
%U | 周 (00-53) 星期日是一週的第一天 |
%u | 周 (00-53) 星期一是一週的第一天 |
%V | 周 (01-53) 星期日是一週的第一天,與 %X 使用 |
%v | 周 (01-53) 星期一是一週的第一天,與 %x 使用 |
%W | 星期名 |
%w | 周的天 (0=星期日, 6=星期六) |
%X | 年,其中的星期日是周的第一天,4 位,與 %V 使用 |
%x | 年,其中的星期一是周的第一天,4 位,與 %v 使用 |
%Y | 年,4 位 |
%y | 年,2 位 |
CROSECOND(time)
返回time的微秒值,範圍從 0 到 999999 。
SECOND(time)
返回time的秒數,範圍是0到59。
MINUTE(time)
返回time的分鐘,範圍是0到59。
HOUR(time)
返回time的小時,範圍是0到23。
DAY(date )
DAYOFMONTH(date )
返回日期中的天。
WEEK(date [,mode ])
返回 date 對應的星期數。 WEEK() 的雙引數形式允許你指定該星期是否起始於週日或週一, 以及返回值的範圍是否為從 0 到 53 或從 1 到 53 。
如果第二個引數是0,星期從星期天開始,如果第二個引數是1,從星期一開始。 若 mode 引數被省略,則使用 default_week_format 系統自變數的值。
MONTH(date )
返回 date 對應的月份,範圍時從 1 到 12 。
QUARTER(date )
返回 date 對應的一年中的季度值,範圍是從 1 到 4。
YEAR(date)
返回date的年份,範圍在1000到9999。
DAYOFWEEK(date )
返回 date (1 = 週日 , 2 = 週一 , …, 7 = 週六 ) 對應的工作日索引。這些索引值符合 ODBC 標準。
DAYOFYEAR(date )
返回date 對應的一年中第幾天,範圍是從 1 到366 。
DAYNAME(date )
返回 date 對應的工作日名稱,週一到週日的英文。
LAST_DAY(date )
返回date中月份的最後一天。若引數無效,則返回 NULL 。
Mysql中沒有first_day()函式。
MONTH(date)
返回date的月份,範圍1到12。
MONTHNAME(date)
返回date的月份名字。
PERIOD_ADD(P, N)
增加N個月到日期P(以格式YYMM或YYYYMM),以格式YYYYMM返回。
PERIOD_DIFF(P1, P2)
返回日期P1和P2之間月數,P1和P2應該以格式YYMM或YYYYMM。
SEC_TO_TIME(seconds )
返回被轉化為小時、分鐘和秒數的 seconds 引數值 , 其格式為 ‘HH:MM:SS’ 或 HHMMSS ,具體格式根據該函式是否用在字串或數字語境中而定。
MAKETIME(hour ,minute ,second )
返回由 hour 、 minute 和 second 引數計算得出的時間值。所有值必須大於0,否則返回NULL。
MAKEDATE(year ,dayofyear )
給出年份值和一年中的天數值,返回一個日期。 dayofyear 必須大於 0 ,否則結果為 NULL 。
TO_DAYS(date)
給出一個日期date,返回一個天數(從0年開始到date的天數)。
FROM_DAYS(N)
給出一個天數N,返回一個DATE值。 格式為YYYY-MM-DD。
STR_TO_DATE(str ,format )
DATE_FORMAT() 函式的反義詞。它獲取一個字串 str 和一個格式字串 format 。若格式字串包含日期和時間部分,則 STR_TO_DATE() 返回一個 DATETIME 值, 若該字串只包含日期部分或時間部分,則返回一個 DATE 或 TIME 值。format參見DATE_FORMAT() 函式中的說明。
SYSDATE()
返回當前日期和時間值,格式為 ‘YYYY-MM-DD HH:MM:SS’ 或 YYYYMMDDHHMMSS , 具體格式根據函式是否用在字串或數字語境而定。
TIME(expr )
提取一個時間或日期時間表達式的時間部分,並將其以字串HH:MM:SS形式返回。
TIMEDIFF(expr ,expr2 )
返回起始時間 expr 和結束時間 expr2 之間的時間。 expr 和 expr2 為時間或 date-and-time表示式, 兩個的型別必須一樣。
格式為:YYYY-MM-DD HH:MM:SS[.msmsmsms]
TIME_FORMAT(time ,format )
和 DATE_FORMAT() 函式相同 , 然而 format 字串可能僅會包含處理小時、分鐘和秒的格式說明符。其它說明符產生一個 NULL 值或 0 。
TIME_TO_SEC(time )
返回已轉化為秒的 time 引數。
TIMESTAMP(expr ) , TIMESTAMP(expr ,expr2 )
對於一個單引數 , 該函式將日期或日期時間表達式 expr 作為日期時間值返回。. 對於兩個引數 , 它將時間表達式 expr2 新增到日期或日期時間表達式 expr 中,返回日期時間。
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 都是正確的。
select timestampadd(day, 3, now()) => 2016-01-10 00:16:46
TIMESTAMPDIFF(interval ,datetime_expr1 ,datetime_expr2 )
返回日期或日期時間表達式 datetime_expr1 和 datetime_expr2之間的整數差。其結果的單位由 interval 引數給出。 interval 的法定值同 TIMESTAMPADD() 函式說明中所列出的相同。
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 格式的數字。
UTC_DATE, UTC_DATE()
返回當前 UTC 日期值,其格式為 ‘YYYY-MM-DD’ 或 YYYYMMDD ,具體格式取決於函式是否用在字串或數字語境中。
UTC_TIME, UTC_TIME()
返回當前 UTC 值,其格式為 ‘HH:MM:SS’ 或 HHMMSS ,具體格式根據該函式是否用在字串或數字語境而定。
UTC_TIMESTAMP, UTC_TIMESTAMP()
返回當前 UTC 日期及時間值,格式為 ‘YYYY-MM-DD HH:MM:SS’ 或 YYYYMMDDHHMMSS ,具體格式根據該函式是否用在字串或數字語境而定。
FROM_UNIXTIME(unix_timestamp )
FROM_UNIXTIME(unix_timestamp ,format )
返回’YYYY-MM-DD HH:MM:SS’ 或YYYYMMDDHHMMSS 格式值的unix_timestamp 引數表示,具體格式取決於該函式是否用在字串中或是數字語境中。 若format 已經給出,則結果的格式是根據format 字串而定。 format 可以包含同DATE_FORMAT() 函式輸入項列表中相同的說明符。
GET_FORMAT(DATE|TIME|DATETIME,’EUR’|’USA’|’JIS’|’ISO’|’INTERNAL’)
返回一個格式字串。這個函式在同 DATE_FORMAT() 及 STR_TO_DATE() 函式結合時很有用。
####流程控制函式:
CASE WHEN THEN
語法有兩種:
1. CASE value WHEN [compare-value] THEN result [WHEN [compare-value] THEN result ……] [ELSE result ]END ;
2. CASE WHEN [condition] THEN result [WHEN[condition] THEN result ……] [ELSE result] END ;
IF(expr1,expr2,expr3)
如果 expr1 是 TRUE (expr1 <> 0 and expr1 <> NULL) ,則 IF() 的返回值為 expr2 ; 否則返回值則為 expr3 。 IF() 的返回值為數字值或字串值,具體情況視其所在語境而定
IFNULL(expr1,expr2)
假如 expr1 不為 NULL ,則 IFNULL() 的返回值為 expr1 ; 否則其返回值為 expr2 。 IFNULL() 的返回值是數字或是字串,具體情況取決於其所使用的語境
####搜尋函式:
MATCH (col1,col2,…)
AGAINST (expr [IN BOOLEAN MODE | WITH QUERY EXPANSION])
####資料庫資訊函式:
BENCHMARK(count ,expr )
BENCHMARK() 函式重複 count 次執行表示式 expr 。 它可以被用於計算 MySQL 處理表達式的速度。結果值通常為 0 。另一種用處來自 mysql 客戶端內部 , 能夠報告問詢執行的次數
CHARSET(str )
返回字串自變數的字符集。
COERCIBILITY(str )
返回字串自變數的整序可壓縮性值。
COLLATION(str )
返回惠字串引數的排序方式。
CONNECTION_ID()
返回對於連線的連線 ID ( 執行緒 ID) 。每個連線都有各自的唯一 ID 。
CURRENT_USER
CURRENT_USER()
返回當前話路被驗證的使用者名稱和主機名組合。這個值符合確定你的存取許可權的 MySQL 賬戶。在被指定 SQL SECURITY DEFINER 特徵的儲存程式內, CURRENT_USER() 返回程式的建立者
DATABASE()
返回使用 utf8 字符集的預設 ( 當前 ) 資料庫名。在儲存程式裡,預設資料庫是同該程式向關聯的資料庫,但並不一定與呼叫語境的預設資料庫相同。
FOUND_ROWS()
SELECT 語句可能包括一個 LIMIT 子句,用來限制伺服器返回客戶端的行數。在有些情況下,需要不用再次執行該語句而得知在沒有 LIMIT 時到底該語句返回了多少行。為了知道這個行數 , 包括在 SELECT 語句中選擇 SQL_CALC_FOUND_ROWS ,隨後呼叫 FOUND_ROWS()
LAST_INSERT_ID() LAST_INSERT_ID(expr )
自動返回最後一個 INSERT 或 UPDATE 問詢為 AUTO_INCREMENT 列設定的第一個 發生的值。
ROW_COUNT()
返回被前面語句更新的、插入的或刪除的行數。 這個行數和 mysql 客戶端顯示的行數及 mysql_affected_rows() C API 函式返回的值相同。
SCHEMA()
這個函式和 DATABASE() 具有相同的意義
USER()
SESSION_USER()
SYSTEM_USER()
返回當前 MySQL 使用者名稱和機主名
VERSION()
返回指示 MySQL 伺服器版本的字串。這個字串使用 utf8 字符集。
聚合函式:
AVG([DISTINCT] expr )
返回 expr 的平均值。 DISTINCT 選項可用於返回 expr 的不同值的平均值。
BIT_AND(expr )
返回expr 中所有位元的 bitwise AND 。計算執行的精確度為64 位元(BIGINT) 。若找不到匹配的行,則這個函式返回1844 ( 這是無符號 BIGINT 值,所有位元被設定為 1 )。
BIT_OR(expr )
返回expr 中所有位元的bitwise OR 。計算執行的精確度為64 位元(BIGINT) 。若找不到匹配的行,則函式返回 0 。
BIT_XOR(expr )
返回expr 中所有位元的bitwise XOR 。計算執行的精確度為64 位元(BIGINT) 。若找不到匹配的行,則函式返回 0 。
COUNT(expr )
返回SELECT 語句檢索到的行中非NULL 值的數目。若找不到匹配的行,則COUNT() 返回 0
COUNT(DISTINCT expr ,[expr …])
返回不同的非NULL 值數目。若找不到匹配的項,則COUNT(DISTINCT) 返回 0
GROUP_CONCAT(expr )
返回帶有來自一個組的連線的非NULL 值的字串結果。
完整的語法如下所示:
GROUP_CONCAT([DISTINCT] expr [,expr …] [ORDER BY {unsigned_integer | col_name | expr }
[ASC | DESC] [,col_name …]]
[SEPARATOR str_val ])
MIN([DISTINCT] expr )
MAX([DISTINCT] expr )
返回 expr 的最小值和最大值。 MIN() 和 MAX() 的取值可以是一個字串引數;在這些情況下, 它們返回最小或最大字串值。
STD(expr )
STDDEV(expr )
返回 expr 的總體標準偏差。這是標準 SQL 的延伸。這個函式的 STDDEV() 形式用來提供和 Oracle 的相容性。可使用標準 SQL 函式 STDDEV_POP() 進行代替
STDDEV_POP(expr )
返回expr 的總體標準偏差(VAR_POP() 的平方根) 。你也可以使用 STD() 或STDDEV(), 它們具有相同的意義,然而不是標準的 SQL 。若找不到匹配的行,則STDDEV_POP() 返回 NULL
STDDEV_SAMP(expr )
返回expr 的樣本標準差 ( VAR_SAMP() 的平方根) 。若找不到匹配的行,則STDDEV_SAMP() 返回 NULL
SUM([DISTINCT] expr )
返回expr 的總數。 若返回集合中無任何行,則 SUM() 返回NULL 。DISTINCT 關鍵詞可用於 MySQL 5.1 中,求得expr 不同值的總和。 若找不到匹配的行,則SUM() 返回 NULL
VAR_POP(expr )
返回 expr 總體標準方差。它將行視為總體,而不是一個樣本, 所以它將行數作為分母。你也可以使用 VARIANCE(), 它具有相同的意義然而不是 標準的 SQL
VAR_SAMP(expr )
返回expr 的樣本方差。更確切的說,分母的數字是行數減去1 。若找不到匹配的行,則VAR_SAMP() 返回NULL
VARIANCE(expr )
返回expr 的總體標準方差。這是標準SQL 的延伸。可使用標準SQL 函式 VAR_POP() 進行代替。若找不到匹配的項,則VARIANCE() 返回NULL