Mysql函式匯總
- 一.字串函式
- 二.數學函式
- 三.日期函式
- 四.Mysql高級函式
一.字串函式
| 序號 | 函式 | 描述 | 示例 |
|---|---|---|---|
| 1 | ASCII(s) | 回傳字串s的第一個字符的ASCII碼 | select ASCII(sname) from student where sid=1; |
| 2 | CHAR_LENGTH(s) | 回傳字串s的字符數 | select char_length(sname) from student where sid=1; |
| 3 | CHARACTER(s) | 回傳字串s的字符數 | select character_length(sname) from student where sid=1; |
| 4 | CONCAT(s1,s2…sn) | 字串 s1,s2 等多個字串合并為一個字串 | select concat(‘i’,‘love’,‘you’); |
| 5 | CONCAT_WS(x, s1,s2…sn) | 同 CONCAT(s1,s2,…) 函式,但是每個字串之間要加上 x,x 可以是分隔符 | select concat_ws(’-’,‘i’,‘love’,‘you’); |
| 6 | FIELD(s,s1,s2…) | 回傳第一個字串 s 在字串串列(s1,s2…)中的位置 | select field(‘a’,‘b’,‘c’,‘d’,‘a’,‘t’); |
| 7 | FIND_IN_SET(s1,s2) | 回傳在字串s2中與s1匹配的字串的位置 | SELECT FIND_IN_SET(“c”, “a,b,c,d,e”); |
| 8 | FORMAT(x,n) | 函式可以將數字 x 進行格式化 “#,###.##”, 將 x 保留到小數點后 n 位,最后一位四舍五入, | SELECT FORMAT(250500.5634, 2); – 輸出 250,500.56 |
| 9 | INSERT(s1,x,len,s2) | 字串 s2 替換 s1 的 x 位置開始長度為 len 的字串 | SELECT INSERT(“google.com”, 1, 6, “runnob”); – 輸出:runoob.com |
| 10 | LOCATE(s1,s) | 從字串 s 中獲取 s1 的開始位置 | SELECT LOCATE(‘st’,‘myteststring’); – 5 |
| 11 | LCASE(s) | 將字串 s 的所有字母變成小寫字母 | SELECT LCASE(‘RUNOOB’) – runoob |
| 12 | LEFT(s,n) | 回傳字串 s 的前 n 個字符 | SELECT LEFT(‘runoob’,2) – ru |
| 13 | LOWER(s) | 將字串 s 的所有字母變成小寫字母 | SELECT LOWER(‘RUNOOB’) – runoob |
| 14 | LPAD(s1,len,s2) | 在字串 s1 的開始處填充字串 s2,使字串長度達到 len | SELECT LPAD(‘abc’,5,‘xx’) – xxabc |
| 15 | LTRIM(s) | 去掉字串 s 開始處的空格 | SELECT LTRIM(" RUNOOB") AS LeftTrimmedString;-- RUNOOB |
| 16 | MID(s,n,len) | 從字串 s 的 n 位置截取長度為 len 的子字串,同 SUBSTRING(s,n,len) | SELECT MID(“RUNOOB”, 2, 3) AS ExtractString; – UNO |
| 17 | POSITION(s1 IN s) | 從字串 s 中獲取 s1 的開始位置 | SELECT POSITION(‘b’ in ‘abc’) – 2 |
| 18 | REPEAT(s,n) | 將字串 s 重復 n 次 | SELECT REPEAT(‘runoob’,3) – runoobrunoobrunoob |
| 19 | REPLACE(s,s1,s2) | 將字串 s2 替代字串 s 中的字串 s1 | SELECT REPLACE(‘abc’,‘a’,‘x’) --xbc |
| 20 | REVERSE(s) | 將字串s的順序反過來 | SELECT REVERSE(‘abc’) – cba |
| 21 | RIGHT(s,n) | 回傳字串 s 的后 n 個字符 | SELECT RIGHT(‘runoob’,2) – ob |
| 22 | RPAD(s1,len,s2) | 在字串 s1 的結尾處添加字串 s2,使字串的長度達到 len | SELECT RPAD(‘abc’,5,‘xx’) – abcxx |
| 23 | RTRIM(s) | 去掉字串 s 結尾處的空格 | SELECT RTRIM("RUNOOB ") AS RightTrimmedString; – RUNOOB |
| 24 | SPACE(n) | 回傳 n 個空格 | SELECT SPACE(10); |
| 25 | STRCMP(s1,s2) | 比較字串 s1 和 s2,如果 s1 與 s2 相等回傳 0 ,如果 s1>s2 回傳 1,如果 s1<s2 回傳 -1 | SELECT STRCMP(“runoob”, “runoob”); – 0 |
| 26 | SUBSTR(s, start, length) | 從字串 s 的 start 位置截取長度為 length 的子字串 | SELECT SUBSTR(“RUNOOB”, 2, 3) AS ExtractString; – UNO |
| 27 | SUBSTRING(s, start, length) | 從字串 s 的 start 位置截取長度為 length 的子字串 | SELECT SUBSTRING(“RUNOOB”, 2, 3) AS ExtractString; – UNO |
| 28 | TRIM(s) | 去掉字串 s 開始和結尾處的空格 | SELECT TRIM(’ RUNOOB ') AS TrimmedString; |
| 29 | UCASE(s) | 將字串轉換為大寫 | SELECT UCASE(“runoob”); – RUNOOB |
| 30 | UPPER(s) | 將字串轉換為大寫 | SELECT UPPER(“runoob”); – RUNOOB |
二.數學函式
| 序號 | 函式名 | 描述 | 示例 |
|---|---|---|---|
| 1 | ABS(x) | 回傳 x 的絕對值 | SELECT ABS(-1) – 回傳1 |
| 2 | ACOS(x) | 求 x 的反余弦值(引數是弧度) | SELECT ACOS(0.25); |
| 3 | ASIN(x) | 求反正弦值(引數是弧度) | SELECT ASIN(0.25); |
| 4 | ATAN(x) | 求反正切值(引數是弧度) | SELECT ATAN(2.5); |
| 5 | ATAN2(n, m) | 求反正切值(引數是弧度) | SELECT ATAN2(-0.8, 2); |
| 6 | AVG(expression) | 回傳一個運算式的平均值,expression 是一個欄位 | SELECT AVG(Price) AS AveragePrice FROM Products; |
| 7 | CEIL(x) | 回傳大于或等于 x 的最小整數 | SELECT CEIL(1.5) – 回傳2 |
| 8 | CEILING(x) | 回傳大于或等于 x 的最小整數 | SELECT CEILING(1.5); – 回傳2 |
| 9 | COS(x) | 求余弦值(引數是弧度) | SELECT COS(2); |
| 10 | COT(x) | 求余切值(引數是弧度) | SELECT COT(6); |
| 11 | COUNT(expression) | 回傳查詢的記錄總數,expression 引數是一個欄位或者 * 號 | SELECT COUNT(ProductID) AS NumberOfProducts FROM Products; |
| 12 | DEGREES(x) | 將弧度轉換為角度 | SELECT DEGREES(3.1415926535898) – 180 |
| 13 | n DIV m | 整除,n 為被除數,m 為除數 | SELECT 10 DIV 5; – 2 |
| 14 | EXP(x) | 回傳 e 的 x 次方 | SELECT EXP(3) – 20.085536923188 |
| 15 | FLOOR(x) | 回傳小于或等于 x 的最大整數 | SELECT FLOOR(1.5) – 回傳1 |
| 16 | GREATEST(expr1, expr2, expr3, …) | 回傳串列中的最大值 | SELECT GREATEST(3, 12, 34, 8, 25); – 34 |
| 17 | LEAST(expr1, expr2, expr3, …) | 回傳串列中的最小值 | SELECT LEAST(3, 12, 34, 8, 25); – 3 |
| 18 | LN | 回傳數字的自然對數,以 e 為底, | SELECT LN(2); – 0.6931471805599453 |
| 19 | LOG(x) 或 LOG(base, x) | 回傳自然對數(以 e 為底的對數),如果帶有 base 引數,則 base 為指定帶底數, | SELECT LOG(2, 4); – 2 |
| 20 | LOG10(x) | 回傳以 10 為底的對數 | SELECT LOG10(100) – 2 |
| 21 | LOG2(x) | 回傳以 2 為底的對數 | SELECT LOG2(6); – 2.584962500721156 |
| 22 | MAX(expression) | 回傳欄位 expression 中的最大值 | SELECT MAX(Price) AS LargestPrice FROM Products; |
| 23 | MIN(expression) | 回傳欄位 expression 中的最小值 | SELECT MIN(Price) AS MinPrice FROM Products; |
| 24 | MOD(x,y) | 回傳 x 除以 y 以后的余數 | SELECT MOD(5,2) – 1 |
| 25 | PI() | 回傳圓周率(3.141593) | SELECT PI() --3.141593 |
| 26 | POW(x,y) | 回傳 x 的 y 次方 | SELECT POW(2,3) – 8 |
| 27 | POWER(x,y) | 回傳 x 的 y 次方 | SELECT POWER(2,3) – 8 |
| 28 | RADIANS(x) | 將角度轉換為弧度 | SELECT RADIANS(180) – 3.1415926535898 |
| 29 | RAND() | 回傳 0 到 1 的亂數 | SELECT RAND() --0.93099315644334 |
| 30 | ROUND(x) | 回傳離 x 最近的整數 | SELECT ROUND(1.23456) --1 |
| 31 | SIGN(x) | 回傳 x 的符號,x 是負數、0、正數分別回傳 -1、0 和 1 | SELECT SIGN(-10) – (-1) |
| 32 | SIN(x) | 求正弦值(引數是弧度) | SELECT SIN(RADIANS(30)) – 0.5 |
| 33 | SQRT(x) | 回傳x的平方根 | SELECT SQRT(25) – 5 |
| 34 | SUM(expression) | 回傳指定欄位的總和 | SELECT SUM(Quantity) AS TotalItemsOrdered FROM OrderDetails; |
| 35 | TAN(x) | 求正切值(引數是弧度) | SELECT TAN(1.75); – -5.52037992250933 |
| 36 | TRUNCATE(x,y) | 回傳數值 x 保留到小數點后 y 位的值(與 ROUND 最大的區別是不會進行四舍五入) | SELECT TRUNCATE(1.23456,3) – 1.234 |
三.日期函式
| 序號 | 函式名 | 描述 | 示例 |
|---|---|---|---|
| 1 | ADDDATE(d,n) | 計算起始日期 d 加上 n 天的日期 | SELECT ADDDATE(“2017-06-15”, INTERVAL 10 DAY);2017-06-25 |
| 2 | ADDTIME(t,n) | 時間 t 加上 n 秒的時間 | SELECT ADDTIME(‘2011-11-11 11:11:11’, 5) --2011-11-11 11:11:16 (秒) |
| 3 | CURDATE() | 回傳當前日期 | SELECT CURDATE(); 2018-09-19 |
| 4 | CURRENT_DATE() | 回傳當前日期 | SELECT CURRENT_DATE();–2018-09-19 |
| 5 | CURRENT_TIME | 回傳當前時間 | SELECT CURRENT_TIME();–19:59:02 |
| 6 | CURRENT_TIMESTAMP() | 回傳當前日期和時間 | SELECT CURRENT_TIMESTAMP() – 2018-09-19 20:57:43 |
| 7 | DATE() | 從日期或日期時間運算式中提取日期值 | SELECT DATE(“2017-06-15”); --2017-06-15 |
| 8 | DATEDIFF(d1,d2) | 計算日期 d1->d2 之間相隔的天數 | SELECT DATEDIFF(‘2001-01-01’,‘2001-02-02’) --32 |
| 9 | DATE_ADD(d,INTERVAL expr type) | 計算起始日期 d 加上一個時間段后的日期 | SELECT ADDDATE(‘2011-11-11 11:11:11’, INTERVAL 5 MINUTE)—2011-11-11 11:16:11 |
| 11 | 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 |
| 12 | DATE_SUB(date,INTERVAL expr type) | 函式從日期減去指定的時間間隔, | SELECT OrderId,DATE_SUB(OrderDate,INTERVAL 2 DAY) AS OrderPayDate FROM Orders |
| 13 | DAY(d) | 回傳日期 d 是星期幾,如 Monday,Tuesday | SELECT DAYNAME(‘2011-11-11 11:11:11’)–Friday |
| 14 | DAYOFMONTH(d) | 計算日期 d 是本月的第幾天 | SELECT DAYOFMONTH(‘2011-11-11 11:11:11’)–11 |
| 15 | DAYOFWEEK(d) | 日期 d 今天是星期幾,1 星期日,2 星期一,以此類推 | SELECT DAYOFWEEK(‘2011-11-11 11:11:11’)–6 |
| 16 | DAYOFYEAR(d) | 計算日期 d 是本年的第幾天 | SELECT DAYOFYEAR(‘2011-11-11 11:11:11’)–315 |
| 17 | FROM_DAYS(n) | 計算從 0000 年 1 月 1 日開始 n 天后的日期 | SELECT FROM_DAYS(1111) --0003-01-16 |
| 18 | HOUR(t) | 回傳 t 中的小時值 | SELECT HOUR(‘1:2:3’)—1 |
| 19 | LAST_DAY(d) | 回傳給給定日期的那一月份的最后一天 | SELECT LAST_DAY(“2017-06-20”);–2017-06-30 |
| 20 | LOCALTIME() | 回傳當前日期和時間 | SELECT LOCALTIME()—2018-09-19 20:57:43 |
| 21 | LOCALTIMESTAMP() | 回傳當前日期和時間 | SELECT LOCALTIMESTAMP()----2018-09-19 20:57:43 |
| 22 | MAKEDATE(year, day-of-year) | 基于給定引數年份 year 和所在年中的天數序號 day-of-year 回傳一個日期 | SELECT MAKEDATE(2017, 3);----2017-01-03 |
| 23 | MAKETIME(hour, minute, second) | 組合時間,引數分別為小時、分鐘、秒 | SELECT MAKETIME(11, 35, 4);–11:35:04 |
| 24 | MICROSECOND(date) | 回傳日期引數所對應的微秒數 | SELECT MICROSECOND(“2017-06-20 09:34:00.000023”); --23 |
| 25 | MINUTE(t) | 回傳 t 中的分鐘值 | SELECT MINUTE(‘1:2:3’)–2 |
| 26 | MONTHNAME(d) | 回傳日期當中的月份名稱,如 November | SELECT MONTHNAME(‘2011-11-11 11:11:11’)–November |
| 27 | MONTH(d) | 回傳日期d中的月份值,1 到 12 | SELECT MONTH(‘2011-11-11 11:11:11’)—11 |
| 28 | NOW() | 回傳當前日期和時間 | SELECT NOW()–2018-09-19 20:57:43 |
| 29 | PERIOD_ADD(period, number) | 為 年-月 組合日期添加一個時段 | SELECT PERIOD_ADD(201703, 5); --201708 |
| 30 | QUARTER(d) | 回傳日期d是第幾季節,回傳 1 到 4 | SELECT QUARTER(‘2011-11-11 11:11:11’)----4 |
| 31 | SECOND(t) | 回傳 t 中的秒鐘值 | SELECT SECOND(‘1:2:3’)—3 |
| 32 | SEC_TO_TIME(s) | 將以秒為單位的時間 s 轉換為時分秒的格式 | SELECT SEC_TO_TIME(4320)–01:12:00 |
| 33 | STR_TO_DATE(string, format_mask) | 將字串轉變為日期 | SELECT STR_TO_DATE(“August 10 2017”, “%M %d %Y”);–2017-08-10 |
| 34 | SUBDATE(d,n) | 日期 d 減去 n 天后的日期 | SELECT SUBDATE(‘2011-11-11 11:11:11’, 1)–2011-11-10 11:11:11 (默認是天) |
| 35 | SYSDATE() | 回傳當前日期和時間 | SELECT SYSDATE()----2018-09-19 20:57:43 |
| 36 | TIME(expression) | 提取傳入運算式的時間部分 | SELECT TIME(“19:30:10”);–19:30:10 |
| 37 | TIME_FORMAT(t,f) | 按運算式 f 的要求顯示時間 t | SELECT TIME_FORMAT(‘11:11:11’,’%r’)—11:11:11 AM |
| 38 | TIME_TO_SEC(t) | 將時間 t 轉換為秒 | SELECT TIME_TO_SEC(‘1:12:00’)–4320 |
| 39 | TIMEDIFF(time1, time2) | 計算時間差值 | SELECT TIMEDIFF(“13:10:11”, “13:10:10”);–00:00:01 |
| 40 | TIMESTAMP(expression, interval) | 單個引數時,函式回傳日期或日期時間運算式;有2個引數時,將引數加和 | SELECT TIMESTAMP(“2017-07-23”, “13:10:11”);–2017-07-23 13:10:11 |
| 41 | TO_DAYS(d) | 計算日期 d 距離 0000 年 1 月 1 日的天數 | SELECT TO_DAYS(‘0001-01-01 01:01:01’)–366 |
| 42 | WEEK(d) | 計算日期 d 是本年的第幾個星期,范圍是 0 到 53 | SELECT WEEK(‘2011-11-11 11:11:11’)–45 |
| 43 | WEEKDAY(d) | 日期 d 是星期幾,0 表示星期一,1 表示星期二 | SELECT WEEKDAY(“2017-06-15”);–3 |
| 44 | WEEKOFYEAR(d) | 計算日期 d 是本年的第幾個星期,范圍是 0 到 53 | SELECT WEEKOFYEAR(‘2011-11-11 11:11:11’)–45 |
| 45 | YEAR(d) | 回傳年份 | SELECT YEAR(“2017-06-15”);-2017 |
| 46 | YEARWEEK(date, mode) | 回傳年份及第幾周(0到53),mode 中 0 表示周天,1表示周一,以此類推 | SELECT YEARWEEK(“2017-06-15”);–201724 |
四.Mysql高級函式
| 序號 | 函式名 | 描述 | 示例 |
|---|---|---|---|
| 1 | BIN(x) | 回傳 x 的二進制編碼 | SELECT BIN(15); - 1111 |
| 2 | BINARY(s) | 將字串 s 轉換為二進制字串 | SELECT BINARY “RUNOOB”;–RUNOOB |
| 3 | CAST(x AS type) | 轉換資料型別 | SELECT CAST(“2017-08-29” AS DATE);-- 2017-08-29 |
| 4 | COALESCE(expr1, expr2, …, expr_n) | 回傳引數中的第一個非空運算式(從左向右) | SELECT COALESCE(NULL, NULL, NULL, ‘runoob.com’, NULL, ‘google.com’);-- runoob.com |
| 5 | CONNECTION_ID() | 回傳唯一的連接 ID | SELECT CONNECTION_ID();—4292835 |
| 6 | CONV(x,f1,f2) | 回傳 f1 進制數變成 f2 進制數 | SELECT CONV(15, 10, 2);–1111 |
| 7 | CONVERT(s USING cs) | 函式將字串 s 的字符集變成 cs | SELECT CHARSET(‘ABC’)–utf-8 |
| 8 | CURRENT_USER() | 回傳當前用戶 | SELECT CURRENT_USER();–guest@% |
| 9 | DATABASE() | 回傳當前資料庫名 | SELECT DATABASE(); --runoob |
| 10 | IF(expr,v1,v2) | 如果運算式 expr 成立,回傳結果 v1;否則,回傳結果 v2 | SELECT IF(1 > 0,‘正確’,‘錯誤’) --正確 |
| 11 | IFNULL(v1,v2) | 如果 v1 的值不為 NULL,則回傳 v1,否則回傳 v2, | SELECT IFNULL(null,‘Hello Word’)–Hello Word |
| 12 | ISNULL(expression) | 判斷運算式是否為 NULL | SELECT ISNULL(NULL); --1 |
| 13 | LAST_INSERT_ID() | 回傳最近生成的 AUTO_INCREMENT 值 | SELECT LAST_INSERT_ID();–6 |
| 14 | NULLIF(expr1, expr2) | 比較兩個字串,如果字串 expr1 與 expr2 相等 回傳 NULL,否則回傳 expr1 | SELECT NULLIF(25, 25);–null |
| 15 | SESSION_USER() | 回傳當前用戶 | SELECT SESSION_USER();–guest@% |
| 16 | SYSTEM_USER() | 回傳當前用戶 | SELECT SYSTEM_USER();–guest@% |
| 17 | USER() | 回傳當前用戶 | SELECT USER();–guest@% |
| 18 | VERSION() | 回傳資料庫的版本號 | SELECT VERSION()–5.6.34 |
| 19 | case ex when cond1 then r1 when cond2 then r2 else r end | CASE 表示函式開始,END 表示函式結束,如果 cond1 成立,則回傳 r1, 如果 cond2 成立,則回傳 r2,當全部不成立則回傳 result,而當有一個成立之后,后面的就不執行了, | SELECT CASE WHEN 1 > 0 THEN '1 > 0 ’ WHEN 2 > 0 THEN ‘2 > 0’ ELSE '3 > 0 ’ END --1>0 |
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/134518.html
標籤:其他
上一篇:JSP的介紹與基礎代碼的應用
