日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)MYSQL教程MySQL函數(shù)

MySQL 函數(shù)

MySQL 有很多內(nèi)置的函數(shù),以下列出了這些函數(shù)的說明。

在璧山等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站設(shè)計、網(wǎng)站制作 網(wǎng)站設(shè)計制作按需定制網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),全網(wǎng)整合營銷推廣,成都外貿(mào)網(wǎng)站建設(shè),璧山網(wǎng)站建設(shè)費用合理。


MySQL 字符串函數(shù)

函數(shù) 描述 實例
ASCII(s) 返回字符串 s 的第一個字符的 ASCII 碼。

返回 CustomerName 字段第一個字母的 ASCII 碼:

SELECT ASCII(CustomerName) AS NumCodeOfFirstChar
FROM Customers;
CHAR_LENGTH(s) 返回字符串 s 的字符數(shù)

返回字符串 RUNOOB 的字符數(shù)

SELECT CHAR_LENGTH("RUNOOB") AS LengthOfString;
CHARACTER_LENGTH(s) 返回字符串 s 的字符數(shù),等同于 CHAR_LENGTH(s)

返回字符串 RUNOOB 的字符數(shù)

SELECT CHARACTER_LENGTH("RUNOOB") AS LengthOfString;
CONCAT(s1,s2...sn) 字符串 s1,s2 等多個字符串合并為一個字符串

合并多個字符串

SELECT CONCAT("SQL ", "Runoob ", "Gooogle ", "Facebook") AS ConcatenatedString;
CONCAT_WS(x, s1,s2...sn) 同 CONCAT(s1,s2,...) 函數(shù),但是每個字符串之間要加上 x,x 可以是分隔符

合并多個字符串,并添加分隔符:

SELECT CONCAT_WS("-", "SQL", "Tutorial", "is", "fun!")AS ConcatenatedString;
FIELD(s,s1,s2...) 返回第一個字符串 s 在字符串列表(s1,s2...)中的位置

返回字符串 c 在列表值中的位置:

SELECT FIELD("c", "a", "b", "c", "d", "e");
FIND_IN_SET(s1,s2) 返回在字符串s2中與s1匹配的字符串的位置

返回字符串 c 在指定字符串中的位置:

SELECT FIND_IN_SET("c", "a,b,c,d,e");
FORMAT(x,n) 函數(shù)可以將數(shù)字 x 進行格式化 "#,###.##", 將 x 保留到小數(shù)點后 n 位,最后一位四舍五入。

格式化數(shù)字 "#,###.##" 形式:

SELECT FORMAT(250500.5634, 2);     -- 輸出 250,500.56
INSERT(s1,x,len,s2) 字符串 s2 替換 s1 的 x 位置開始長度為 len 的字符串

從字符串第一個位置開始的 6 個字符替換為 runoob:

SELECT INSERT("google.com", 1, 6, "runoob");  -- 輸出:runoob.com
LOCATE(s1,s) 從字符串 s 中獲取 s1 的開始位置

獲取 b 在字符串 abc 中的位置:

SELECT LOCATE('st','myteststring');  -- 5

返回字符串 abc 中 b 的位置:

SELECT LOCATE('b', 'abc') -- 2
LCASE(s) 將字符串 s 的所有字母變成小寫字母

字符串 RUNOOB 轉(zhuǎn)換為小寫:

SELECT LCASE('RUNOOB') -- runoob
LEFT(s,n) 返回字符串 s 的前 n 個字符

返回字符串 runoob 中的前兩個字符:

SELECT LEFT('runoob',2) -- ru
LOWER(s) 將字符串 s 的所有字母變成小寫字母

字符串 RUNOOB 轉(zhuǎn)換為小寫:

SELECT LOWER('RUNOOB') -- runoob
LPAD(s1,len,s2) 在字符串 s1 的開始處填充字符串 s2,使字符串長度達到 len

將字符串 xx 填充到 abc 字符串的開始處:

SELECT LPAD('abc',5,'xx') -- xxabc
LTRIM(s) 去掉字符串 s 開始處的空格

去掉字符串 RUNOOB開始處的空格:

SELECT LTRIM("    RUNOOB") AS LeftTrimmedString;-- RUNOOB
MID(s,n,len) 從字符串 s 的 n 位置截取長度為 len 的子字符串,同 SUBSTRING(s,n,len)

從字符串 RUNOOB 中的第 2 個位置截取 3個 字符:

SELECT MID("RUNOOB", 2, 3) AS ExtractString; -- UNO
POSITION(s1 IN s) 從字符串 s 中獲取 s1 的開始位置

返回字符串 abc 中 b 的位置:

SELECT POSITION('b' in 'abc') -- 2
REPEAT(s,n) 將字符串 s 重復(fù) n 次

將字符串 runoob 重復(fù)三次:

SELECT REPEAT('runoob',3) -- runoobrunoobrunoob
REPLACE(s,s1,s2) 將字符串 s2 替代字符串 s 中的字符串 s1

將字符串 abc 中的字符 a 替換為字符 x:

SELECT REPLACE('abc','a','x') --xbc
REVERSE(s) 將字符串s的順序反過來

將字符串 abc 的順序反過來:

SELECT REVERSE('abc') -- cba
RIGHT(s,n) 返回字符串 s 的后 n 個字符

返回字符串 runoob 的后兩個字符:

SELECT RIGHT('runoob',2) -- ob
RPAD(s1,len,s2) 在字符串 s1 的結(jié)尾處添加字符串 s2,使字符串的長度達到 len

將字符串 xx 填充到 abc 字符串的結(jié)尾處:

SELECT RPAD('abc',5,'xx') -- abcxx
RTRIM(s) 去掉字符串 s 結(jié)尾處的空格

去掉字符串 RUNOOB 的末尾空格:

SELECT RTRIM("RUNOOB     ") AS RightTrimmedString;   -- RUNOOB
SPACE(n) 返回 n 個空格

返回 10 個空格:

SELECT SPACE(10);
STRCMP(s1,s2) 比較字符串 s1 和 s2,如果 s1 與 s2 相等返回 0 ,如果 s1>s2 返回 1,如果 s1

比較字符串:

SELECT STRCMP("runoob", "runoob");  -- 0
SUBSTR(s, start, length) 從字符串 s 的 start 位置截取長度為 length 的子字符串

從字符串 RUNOOB 中的第 2 個位置截取 3個 字符:

SELECT SUBSTR("RUNOOB", 2, 3) AS ExtractString; -- UNO
SUBSTRING(s, start, length) 從字符串 s 的 start 位置截取長度為 length 的子字符串,等同于 SUBSTR(s, start, length)

從字符串 RUNOOB 中的第 2 個位置截取 3個 字符:

SELECT SUBSTRING("RUNOOB", 2, 3) AS ExtractString; -- UNO
SUBSTRING_INDEX(s, delimiter, number) 返回從字符串 s 的第 number 個出現(xiàn)的分隔符 delimiter 之后的子串。
如果 number 是正數(shù),返回第 number 個字符左邊的字符串。
如果 number 是負數(shù),返回第(number 的絕對值(從右邊數(shù)))個字符右邊的字符串。
SELECT SUBSTRING_INDEX('a*b','*',1) -- a
SELECT SUBSTRING_INDEX('a*b','*',-1)    -- b
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('a*b*c*d*e','*',3),'*',-1)    -- c
TRIM(s) 去掉字符串 s 開始和結(jié)尾處的空格

去掉字符串 RUNOOB 的首尾空格:

SELECT TRIM('    RUNOOB    ') AS TrimmedString;
UCASE(s) 將字符串轉(zhuǎn)換為大寫

將字符串 runoob 轉(zhuǎn)換為大寫:

SELECT UCASE("runoob"); -- RUNOOB
UPPER(s) 將字符串轉(zhuǎn)換為大寫

將字符串 runoob 轉(zhuǎn)換為大寫:

SELECT UPPER("runoob"); -- RUNOOB

MySQL 數(shù)字函數(shù)

函數(shù)名 描述 實例
ABS(x) 返回 x 的絕對值  

返回 -1 的絕對值:

SELECT ABS(-1) -- 返回1
ACOS(x) 求 x 的反余弦值(單位為弧度),x 為一個數(shù)值
SELECT ACOS(0.25);
ASIN(x) 求反正弦值(單位為弧度),x 為一個數(shù)值
SELECT ASIN(0.25);
ATAN(x) 求反正切值(單位為弧度),x 為一個數(shù)值
SELECT ATAN(2.5);
ATAN2(n, m) 求反正切值(單位為弧度)
SELECT ATAN2(-0.8, 2);
AVG(expression) 返回一個表達式的平均值,expression 是一個字段

返回 Products 表中Price 字段的平均值:

SELECT AVG(Price) AS AveragePrice FROM Products;
CEIL(x) 返回大于或等于 x 的最小整數(shù) 
SELECT CEIL(1.5) -- 返回2
CEILING(x) 返回大于或等于 x 的最小整數(shù) 
SELECT CEILING(1.5); -- 返回2
COS(x) 求余弦值(參數(shù)是弧度)
SELECT COS(2);
COT(x) 求余切值(參數(shù)是弧度)
SELECT COT(6);
COUNT(expression) 返回查詢的記錄總數(shù),expression 參數(shù)是一個字段或者 * 號

返回 Products 表中 products 字段總共有多少條記錄:

SELECT COUNT(ProductID) AS NumberOfProducts FROM Products;
DEGREES(x) 將弧度轉(zhuǎn)換為角度  
SELECT DEGREES(3.1415926535898) -- 180
n DIV m 整除,n 為被除數(shù),m 為除數(shù)

計算 10 除于 5:

SELECT 10 DIV 5;  -- 2
EXP(x) 返回 e 的 x 次方  

計算 e 的三次方:

SELECT EXP(3) -- 20.085536923188
FLOOR(x) 返回小于或等于 x 的最大整數(shù)  

小于或等于 1.5 的整數(shù):

SELECT FLOOR(1.5) -- 返回1
GREATEST(expr1, expr2, expr3, ...) 返回列表中的最大值

返回以下數(shù)字列表中的最大值:

SELECT GREATEST(3, 12, 34, 8, 25); -- 34

返回以下字符串列表中的最大值:

SELECT GREATEST("Google", "Runoob", "Apple");   -- Runoob
LEAST(expr1, expr2, expr3, ...) 返回列表中的最小值

返回以下數(shù)字列表中的最小值:

SELECT LEAST(3, 12, 34, 8, 25); -- 3

返回以下字符串列表中的最小值:

SELECT LEAST("Google", "Runoob", "Apple");   -- Apple
LN 返回數(shù)字的自然對數(shù),以 e 為底。

返回 2 的自然對數(shù):

SELECT LN(2);  -- 0.6931471805599453
LOG(x) 或 LOG(base, x) 返回自然對數(shù)(以 e 為底的對數(shù)),如果帶有 base 參數(shù),則 base 為指定帶底數(shù)?! ?/td>
SELECT LOG(20.085536923188) -- 3
SELECT LOG(2, 4); -- 2
LOG10(x) 返回以 10 為底的對數(shù)  
SELECT LOG10(100) -- 2
LOG2(x) 返回以 2 為底的對數(shù)

返回以 2 為底 6 的對數(shù):

SELECT LOG2(6);  -- 2.584962500721156
MAX(expression) 返回字段 expression 中的最大值

返回數(shù)據(jù)表 Products 中字段 Price 的最大值:

SELECT MAX(Price) AS LargestPrice FROM Products;
MIN(expression) 返回字段 expression 中的最小值

返回數(shù)據(jù)表 Products 中字段 Price 的最小值:

SELECT MIN(Price) AS MinPrice FROM Products;
MOD(x,y) 返回 x 除以 y 以后的余數(shù) 

5 除于 2 的余數(shù):

SELECT MOD(5,2) -- 1
PI() 返回圓周率(3.141593)  
SELECT PI() --3.141593
POW(x,y) 返回 x 的 y 次方 

2 的 3 次方:

SELECT POW(2,3) -- 8
POWER(x,y) 返回 x 的 y 次方 

2 的 3 次方:

SELECT POWER(2,3) -- 8
RADIANS(x) 將角度轉(zhuǎn)換為弧度  

180 度轉(zhuǎn)換為弧度:

SELECT RADIANS(180) -- 3.1415926535898
RAND() 返回 0 到 1 的隨機數(shù)  
SELECT RAND() --0.93099315644334
ROUND(x [,y]) 返回離 x 最近的整數(shù),可選參數(shù) y 表示要四舍五入的小數(shù)位數(shù),如果省略,則返回整數(shù)。
SELECT ROUND(1.23456) --1

SELECT ROUND(345.156, 2) -- 345.16
SIGN(x) 返回 x 的符號,x 是負數(shù)、0、正數(shù)分別返回 -1、0 和 1 
SELECT SIGN(-10) -- (-1)
SIN(x) 求正弦值(參數(shù)是弧度)  
SELECT SIN(RADIANS(30)) -- 0.5
SQRT(x) 返回x的平方根  

25 的平方根:

SELECT SQRT(25) -- 5
SUM(expression) 返回指定字段的總和

計算 OrderDetails 表中字段 Quantity 的總和:

SELECT SUM(Quantity) AS TotalItemsOrdered FROM OrderDetails;
TAN(x) 求正切值(參數(shù)是弧度)
SELECT TAN(1.75);  -- -5.52037992250933
TRUNCATE(x,y) 返回數(shù)值 x 保留到小數(shù)點后 y 位的值(與 ROUND 最大的區(qū)別是不會進行四舍五入)
SELECT TRUNCATE(1.23456,3) -- 1.234

MySQL 日期函數(shù)

函數(shù)名 描述 實例
ADDDATE(d,n) 計算起始日期 d 加上 n 天的日期
SELECT ADDDATE("2017-06-15", INTERVAL 10 DAY);
->2017-06-25
ADDTIME(t,n) n 是一個時間表達式,時間 t 加上時間表達式 n

加 5 秒:

SELECT ADDTIME('2011-11-11 11:11:11', 5);
->2011-11-11 11:11:16 (秒)

添加 2 小時, 10 分鐘, 5 秒:

SELECT ADDTIME("2020-06-15 09:34:21", "2:10:5"); 
-> 2020-06-15 11:44:26
CURDATE() 返回當(dāng)前日期
SELECT CURDATE();
-> 2018-09-19
CURRENT_DATE() 返回當(dāng)前日期
SELECT CURRENT_DATE();
-> 2018-09-19
CURRENT_TIME 返回當(dāng)前時間
SELECT CURRENT_TIME();
-> 19:59:02
CURRENT_TIMESTAMP() 返回當(dāng)前日期和時間
SELECT CURRENT_TIMESTAMP()
-> 2018-09-19 20:57:43
CURTIME() 返回當(dāng)前時間
SELECT CURTIME();
-> 19:59:02
DATE() 從日期或日期時間表達式中提取日期值
SELECT DATE("2017-06-15");    
-> 2017-06-15
DATEDIFF(d1,d2) 計算日期 d1->d2 之間相隔的天數(shù)
SELECT DATEDIFF('2001-01-01','2001-02-02')
-> -32
DATE_ADD(d,INTERVAL expr type) 計算起始日期 d 加上一個時間段后的日期,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
SELECT DATE_ADD("2017-06-15", INTERVAL 10 DAY);    
-> 2017-06-25

SELECT DATE_ADD("2017-06-15 09:34:21", INTERVAL 15 MINUTE);
-> 2017-06-15 09:49:21

SELECT DATE_ADD("2017-06-15 09:34:21", INTERVAL -3 HOUR);
->2017-06-15 06:34:21

SELECT DATE_ADD("2017-06-15 09:34:21", INTERVAL -3 MONTH);
->2017-04-15
DATE_FORMAT(d,f) 按表達式 f的要求顯示日期 d
SELECT DATE_FORMAT('2011-11-11 11:11:11','%Y-%m-%d %r')
-> 2011-11-11 11:11:11 AM
DATE_SUB(date,INTERVAL expr type) 函數(shù)從日期減去指定的時間間隔。

Orders 表中 OrderDate 字段減去 2 天:

SELECT OrderId,DATE_SUB(OrderDate,INTERVAL 2 DAY) AS OrderPayDate
FROM Orders
DAY(d) 返回日期值 d 的日期部分
SELECT DAY("2017-06-15");  
-> 15
DAYNAME(d) 返回日期 d 是星期幾,如 Monday,Tuesday
SELECT DAYNAME('2011-11-11 11:11:11')
->Friday
DAYOFMONTH(d) 計算日期 d 是本月的第幾天
SELECT DAYOFMONTH('2011-11-11 11:11:11')
->11
DAYOFWEEK(d) 日期 d 今天是星期幾,1 星期日,2 星期一,以此類推
SELECT DAYOFWEEK('2011-11-11 11:11:11')
->6
DAYOFYEAR(d) 計算日期 d 是本年的第幾天
SELECT DAYOFYEAR('2011-11-11 11:11:11')
->315
EXTRACT(type FROM d) 從日期 d 中獲取指定的值,type 指定返回的值。
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
SELECT EXTRACT(MINUTE FROM '2011-11-11 11:11:11') 
-> 11
FROM_DAYS(n) 計算從 0000 年 1 月 1 日開始 n 天后的日期
SELECT FROM_DAYS(1111)
-> 0003-01-16
HOUR(t) 返回 t 中的小時值
SELECT HOUR('1:2:3')
-> 1
LAST_DAY(d) 返回給給定日期的那一月份的最后一天
SELECT LAST_DAY("2017-06-20");
-> 2017-06-30
LOCALTIME() 返回當(dāng)前日期和時間
SELECT LOCALTIME()
-> 2018-09-19 20:57:43
LOCALTIMESTAMP() 返回當(dāng)前日期和時間
SELECT LOCALTIMESTAMP()
-> 2018-09-19 20:57:43
MAKEDATE(year, day-of-year) 基于給定參數(shù)年份 year 和所在年中的天數(shù)序號 day-of-year 返回一個日期
SELECT MAKEDATE(2017, 3);
-> 2017-01-03
MAKETIME(hour, minute, second) 組合時間,參數(shù)分別為小時、分鐘、秒
SELECT MAKETIME(11, 35, 4);
-> 11:35:04
MICROSECOND(date) 返回日期參數(shù)所對應(yīng)的微秒數(shù)
SELECT MICROSECOND("2017-06-20 09:34:00.000023");
-> 23
MINUTE(t) 返回 t 中的分鐘值
SELECT MINUTE('1:2:3')
-> 2
MONTHNAME(d) 返回日期當(dāng)中的月份名稱,如 November
SELECT MONTHNAME('2011-11-11 11:11:11')
-> November
MONTH(d) 返回日期d中的月份值,1 到 12
SELECT MONTH('2011-11-11 11:11:11')
->11
NOW() 返回當(dāng)前日期和時間
SELECT NOW()
-> 2018-09-19 20:57:43
PERIOD_ADD(period, number) 為 年-月 組合日期添加一個時段
SELECT PERIOD_ADD(201703, 5);   
-> 201708
PERIOD_DIFF(period1, period2) 返回兩個時段之間的月份差值
SELECT PERIOD_DIFF(201710, 201703);
-> 7
QUARTER(d) 返回日期d是第幾季節(jié),返回 1 到 4
SELECT QUARTER('2011-11-11 11:11:11')
-> 4
SECOND(t) 返回 t 中的秒鐘值
SELECT SECOND('1:2:3')
-> 3
SEC_TO_TIME(s) 將以秒為單位的時間 s 轉(zhuǎn)換為時分秒的格式
SELECT SEC_TO_TIME(4320)
-> 01:12:00
STR_TO_DATE(string, format_mask) 將字符串轉(zhuǎn)變?yōu)槿掌?/td>
SELECT STR_TO_DATE("August 10 2017", "%M %d %Y");
-> 2017-08-10
SUBDATE(d,n) 日期 d 減去 n 天后的日期
SELECT SUBDATE('2011-11-11 11:11:11', 1)
->2011-11-10 11:11:11 (默認是天)
SUBTIME(t,n) 時間 t 減去 n 秒的時間
SELECT SUBTIME('2011-11-11 11:11:11', 5)
->2011-11-11 11:11:06 (秒)
SYSDATE() 返回當(dāng)前日期和時間
SELECT SYSDATE()
-> 2018-09-19 20:57:43
TIME(expression) 提取傳入表達式的時間部分
SELECT TIME("19:30:10");
-> 19:30:10
TIME_FORMAT(t,f) 按表達式 f 的要求顯示時間 t
SELECT TIME_FORMAT('11:11:11','%r')
11:11:11 AM
TIME_TO_SEC(t) 將時間 t 轉(zhuǎn)換為秒
SELECT TIME_TO_SEC('1:12:00')
-> 4320
TIMEDIFF(time1, time2) 計算時間差值
mysql> SELECT TIMEDIFF("13:10:11", "13:10:10");
-> 00:00:01
mysql> SELECT TIMEDIFF('2000:01:01 00:00:00',
    ->                 '2000:01:01 00:00:00.000001');
        -> '-00:00:00.000001'
mysql> SELECT TIMEDIFF('2008-12-31 23:59:59.000001',
    ->                 '2008-12-30 01:01:01.000002');
        -> '46:58:57.999999'
TIMESTAMP(expression, interval) 單個參數(shù)時,函數(shù)返回日期或日期時間表達式;有2個參數(shù)時,將參數(shù)加和
mysql> SELECT TIMESTAMP("2017-07-23",  "13:10:11");
-> 2017-07-23 13:10:11
mysql> SELECT TIMESTAMP('2003-12-31');
        -> '2003-12-31 00:00:00'
mysql> SELECT TIMESTAMP('2003-12-31 12:00:00','12:00:00');
        -> '2004-01-01 00:00:00'
TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2) 計算時間差,返回 datetime_expr2 ? datetime_expr1 的時間差
mysql> SELECT TIMESTAMPDIFF(DAY,'2003-02-01','2003-05-01');   // 計算兩個時間相隔多少天
        -> 89
mysql> SELECT TIMESTAMPDIFF(MONTH,'2003-02-01','2003-05-01');   // 計算兩個時間相隔多少月
        -> 3
mysql> SELECT TIMESTAMPDIFF(YEAR,'2002-05-01','2001-01-01');    // 計算兩個時間相隔多少年
        -> -1
mysql> SELECT TIMESTAMPDIFF(MINUTE,'2003-02-01','2003-05-01 12:05:55');  // 計算兩個時間相隔多少分鐘
        -> 128885
TO_DAYS(d) 計算日期 d 距離 0000 年 1 月 1 日的天數(shù)
SELECT TO_DAYS('0001-01-01 01:01:01')
-> 366
WEEK(d) 計算日期 d 是本年的第幾個星期,范圍是 0 到 53
SELECT WEEK('2011-11-11 11:11:11')
-> 45
WEEKDAY(d) 日期 d 是星期幾,0 表示星期一,1 表示星期二
SELECT WEEKDAY("2017-06-15");
-> 3
WEEKOFYEAR(d) 計算日期 d 是本年的第幾個星期,范圍是 0 到 53
SELECT WEEKOFYEAR('2011-11-11 11:11:11')
-> 45
YEAR(d) 返回年份
SELECT YEAR("2017-06-15");
-> 2017
YEARWEEK(date, mode) 返回年份及第幾周(0到53),mode 中 0 表示周天,1表示周一,以此類推
SELECT YEARWEEK("2017-06-15");
-> 201724

MySQL 高級函數(shù)

函數(shù)名 描述 實例
BIN(x) 返回 x 的二進制編碼

15 的 2 進制編碼:

SELECT BIN(15); -- 1111
BINARY(s) 將字符串 s 轉(zhuǎn)換為二進制字符串
SELECT BINARY "RUNOOB";
-> RUNOOB
CASE expression
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
   ...
    WHEN conditionN THEN resultN
    ELSE result
END
CASE 表示函數(shù)開始,END 表示函數(shù)結(jié)束。如果 condition1 成立,則返回 result1, 如果 condition2 成立,則返回 result2,當(dāng)全部不成立則返回 result,而當(dāng)有一個成立之后,后面的就不執(zhí)行了。
SELECT CASE 
  WHEN 1 > 0
  THEN '1 > 0'
  WHEN 2 > 0
  THEN '2 > 0'
  ELSE '3 > 0'
  END
->1 > 0
CAST(x AS type) 轉(zhuǎn)換數(shù)據(jù)類型

字符串日期轉(zhuǎn)換為日期:

SELECT CAST("2017-08-29" AS DATE);
-> 2017-08-29
COALESCE(expr1, expr2, ...., expr_n) 返回參數(shù)中的第一個非空表達式(從左向右)
SELECT COALESCE(NULL, NULL, NULL, 'runoob.com', NULL, 'google.com');
-> runoob.com
CONNECTION_ID() 返回唯一的連接 ID
SELECT CONNECTION_ID();
-> 4292835
CONV(x,f1,f2) 返回 f1 進制數(shù)變成 f2 進制數(shù)
SELECT CONV(15, 10, 2);
-> 1111
CONVERT(s USING cs) 函數(shù)將字符串 s 的字符集變成 cs
SELECT CHARSET('ABC')
->utf-8    

SELECT CHARSET(CONVERT('ABC' USING gbk))
->gbk
CURRENT_USER() 返回當(dāng)前用戶
SELECT CURRENT_USER();
-> guest@%
DATABASE() 返回當(dāng)前數(shù)據(jù)庫名
SELECT DATABASE();   
-> runoob
IF(expr,v1,v2) 如果表達式 expr 成立,返回結(jié)果 v1;否則,返回結(jié)果 v2。
SELECT IF(1 > 0,'正確','錯誤')    
->正確
IFNULL(v1,v2) 如果 v1 的值不為 NULL,則返回 v1,否則返回 v2。
SELECT IFNULL(null,'Hello Word')
->Hello Word
ISNULL(expression) 判斷表達式是否為 NULL
SELECT ISNULL(NULL);
->1
LAST_INSERT_ID() 返回最近生成的 AUTO_INCREMENT 值
SELECT LAST_INSERT_ID();
->6
NULLIF(expr1, expr2) 比較兩個字符串,如果字符串 expr1 與 expr2 相等 返回 NULL,否則返回 expr1
SELECT NULLIF(25, 25);
->
SESSION_USER() 返回當(dāng)前用戶
SELECT SESSION_USER();
-> guest@%
SYSTEM_USER() 返回當(dāng)前用戶
SELECT SYSTEM_USER();
-> guest@%
USER() 返回當(dāng)前用戶
SELECT USER();
-> guest@%
VERSION() 返回數(shù)據(jù)庫的版本號
SELECT VERSION()
-> 5.6.34

以下是 MySQL 8.0 版本新增的一些常用函數(shù):

函數(shù) 描述 實例
JSON_OBJECT() 將鍵值對轉(zhuǎn)換為 JSON 對象
SELECT JSON_OBJECT('key1', 'value1', 'key2', 'value2')
JSON_ARRAY() 將值轉(zhuǎn)換為 JSON 數(shù)組
SELECT JSON_ARRAY(1, 2, 'three')
JSON_EXTRACT() 從 JSON 字符串中提取指定的值
SELECT JSON_EXTRACT('{"name": "John", "age": 30}', '$.name')
JSON_CONTAINS() 檢查一個 JSON 字符串是否包含指定的值
SELECT JSON_CONTAINS('{"name": "John", "age": 30}', 'John', '$.name')
ROW_NUMBER() 為查詢結(jié)果中的每一行分配一個唯一的數(shù)字
SELECT ROW_NUMBER() OVER(ORDER BY id) AS row_number, name FROM users
RANK() 為查詢結(jié)果中的每一行分配一個排名
SELECT RANK() OVER(ORDER BY score DESC) AS rank, name, score FROM students

網(wǎng)站標(biāo)題:創(chuàng)新互聯(lián)MYSQL教程MySQL函數(shù)
本文來源:http://www.5511xx.com/article/dpogihs.html