sitemap
知识分享网:一个值得你收藏的网站!
当前位置:PHP知识网 > mysql > mysql基础教程 > MySQL 函数

MySQL 函数

发布时间:2020-07-29浏览:137评论:0


MYSQL 有很多内置的函数,以下列出了这些函数的说明。


MySQL 字符串函数描述实例

函数

ASCII(s)返回字符串 s 的第一个字符的 ASCII 码。

返回 CustomerName 字段第一个字母的 ASCII 码:

SELECT ASCII(CustomerName) AS NumCodeOfFirstCharFROM Customers;
CHAR_LENGTH(s)返回字符串 s 的字符数

返回字符串 test 的字符数

SELECT CHAR_LENGTH("test") AS LengthOfString;
CHARACTER_LENGTH(s)返回字符串 s 的字符数

返回字符串 test 的字符数

SELECT CHARACTER_LENGTH("test") AS LengthOfString;
CONCAT(s1,s2...sn)字符串 s1,s2 等多个字符串合并为一个字符串

合并多个字符串

SELECT CONCAT("SQL ", "test ", "Gooogle ", "Facebook") AS ConcatenatedString;
CONCAT_WS(x, s1,s2...sn)同 CONCAT(s1,s2,...) 函数,但是每个字符串之间要加上 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)函数可以将数字 x 进行格式化 "#,###.##", 将 x 保留到小数点后 n 位,最后一位四舍五入。

格式化数字 "#,###.##" 形式:

SELECT FORMAT(250500.5634, 2);     -- 输出 250,500.56
INSERT(s1,x,len,s2)字符串 s2 替换 s1 的 x 位置开始长度为 len 的字符串

从字符串第一个位置开始的 6 个字符替换为 test:

SELECT INSERT("google.com", 1, 6, "test");  -- 输出:test.com
LOCATE(s1,s)从字符串 s 中获取 s1 的开始位置

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

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

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

SELECT CHAR_LENGTH("test") AS LengthOfString;0
LCASE(s)将字符串 s 的所有字母变成小写字母

字符串 test 转换为小写:

SELECT CHAR_LENGTH("test") AS LengthOfString;1
LEFT(s,n)返回字符串 s 的前 n 个字符

返回字符串 test 中的前两个字符:

SELECT CHAR_LENGTH("test") AS LengthOfString;2
LOWER(s)将字符串 s 的所有字母变成小写字母

字符串 test 转换为小写:

SELECT CHAR_LENGTH("test") AS LengthOfString;3
LPAD(s1,len,s2)在字符串 s1 的开始处填充字符串 s2,使字符串长度达到 len

将字符串 xx 填充到 abc 字符串的开始处:

SELECT CHAR_LENGTH("test") AS LengthOfString;4
LTRIM(s)去掉字符串 s 开始处的空格

去掉字符串 test开始处的空格:

SELECT CHAR_LENGTH("test") AS LengthOfString;5
MID(s,n,len)从字符串 s 的 start 位置截取长度为 length 的子字符串,同 SUBSTRING(s,n,len)

从字符串 test 中的第 2 个位置截取 3个 字符:

SELECT CHAR_LENGTH("test") AS LengthOfString;6
POSITION(s1 IN s)从字符串 s 中获取 s1 的开始位置

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

SELECT CHAR_LENGTH("test") AS LengthOfString;7
REPEAT(s,n)将字符串 s 重复 n 次

将字符串 test 重复三次:

SELECT CHAR_LENGTH("test") AS LengthOfString;8
REPLACE(s,s1,s2)将字符串 s2 替代字符串 s 中的字符串 s1

将字符串 abc 中的字符 a 替换为字符 x:

SELECT CHAR_LENGTH("test") AS LengthOfString;9
REVERSE(s)将字符串s的顺序反过来

将字符串 abc 的顺序反过来:

SELECT CHARACTER_LENGTH("test") AS LengthOfString;0
RIGHT(s,n)返回字符串 s 的后 n 个字符

返回字符串 test 的后两个字符:

SELECT CHARACTER_LENGTH("test") AS LengthOfString;1
RPAD(s1,len,s2)在字符串 s1 的结尾处添加字符串 s2,使字符串的长度达到 len

将字符串 xx 填充到 abc 字符串的结尾处:

SELECT CHARACTER_LENGTH("test") AS LengthOfString;2
RTRIM(s)去掉字符串 s 结尾处的空格

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

SELECT CHARACTER_LENGTH("test") AS LengthOfString;3
SPACE(n)返回 n 个空格

返回 10 个空格:

SELECT CHARACTER_LENGTH("test") AS LengthOfString;4
STRCMP(s1,s2)比较字符串 s1 和 s2,如果 s1 与 s2 相等返回 0 ,如果 s1>s2 返回 1,如果 s1<s2 返回 -1

比较字符串:

SELECT CHARACTER_LENGTH("test") AS LengthOfString;5
SUBSTR(s, start, length)从字符串 s 的 start 位置截取长度为 length 的子字符串

从字符串 test 中的第 2 个位置截取 3个 字符:

SELECT CHARACTER_LENGTH("test") AS LengthOfString;6
SUBSTRING(s, start, length)从字符串 s 的 start 位置截取长度为 length 的子字符串

从字符串 test 中的第 2 个位置截取 3个 字符:

SELECT CHARACTER_LENGTH("test") AS LengthOfString;7
SUBSTRING_INDEX(s, delimiter, number)返回从字符串 s 的第 number 个出现的分隔符 delimiter 之后的子串。
如果 number 是正数,返回第 number 个字符左边的字符串。
如果 number 是负数,返回第(number 的绝对值(从右边数))个字符右边的字符串。
SELECT CHARACTER_LENGTH("test") AS LengthOfString;8
TRIM(s)去掉字符串 s 开始和结尾处的空格

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

SELECT CHARACTER_LENGTH("test") AS LengthOfString;9
UCASE(s)将字符串转换为大写

将字符串 test 转换为大写:

SELECT CONCAT("SQL ", "test ", "Gooogle ", "Facebook") AS ConcatenatedString;0
UPPER(s)将字符串转换为大写

将字符串 test 转换为大写:

SELECT CONCAT("SQL ", "test ", "Gooogle ", "Facebook") AS ConcatenatedString;1

MySQL 数字函数描述实例

函数名

ABS(x)返回 x 的绝对值  

返回 -1 的绝对值:

SELECT CONCAT("SQL ", "test ", "Gooogle ", "Facebook") AS ConcatenatedString;2
ACOS(x)求 x 的反余弦值(参数是弧度)
SELECT CONCAT("SQL ", "test ", "Gooogle ", "Facebook") AS ConcatenatedString;3
ASIN(x)求反正弦值(参数是弧度)
SELECT CONCAT("SQL ", "test ", "Gooogle ", "Facebook") AS ConcatenatedString;4
ATAN(x)求反正切值(参数是弧度)
SELECT CONCAT("SQL ", "test ", "Gooogle ", "Facebook") AS ConcatenatedString;5
ATAN2(n, m)求反正切值(参数是弧度)
SELECT CONCAT("SQL ", "test ", "Gooogle ", "Facebook") AS ConcatenatedString;6
AVG(expression)返回一个表达式的平均值,expression 是一个字段

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

SELECT CONCAT("SQL ", "test ", "Gooogle ", "Facebook") AS ConcatenatedString;7
CEIL(x)返回大于或等于 x 的最小整数 
SELECT CONCAT("SQL ", "test ", "Gooogle ", "Facebook") AS ConcatenatedString;8
CEILING(x)返回大于或等于 x 的最小整数 
SELECT CONCAT("SQL ", "test ", "Gooogle ", "Facebook") AS ConcatenatedString;8
COS(x)求余弦值(参数是弧度)
SELECT CONCAT_WS("-", "SQL", "Tutorial", "is", "fun!")AS ConcatenatedString;0
COT(x)求余切值(参数是弧度)
SELECT CONCAT_WS("-", "SQL", "Tutorial", "is", "fun!")AS ConcatenatedString;1
COUNT(expression)返回查询的记录总数,expression 参数是一个字段或者 * 号

返回 Products 表中 products 字段总共有多少条记录:

SELECT CONCAT_WS("-", "SQL", "Tutorial", "is", "fun!")AS ConcatenatedString;2
DEGREES(x)将弧度转换为角度  
SELECT CONCAT_WS("-", "SQL", "Tutorial", "is", "fun!")AS ConcatenatedString;3
n DIV m整除,n 为被除数,m 为除数

计算 10 除于 5:

SELECT CONCAT_WS("-", "SQL", "Tutorial", "is", "fun!")AS ConcatenatedString;4
EXP(x)返回 e 的 x 次方  

计算 e 的三次方:

SELECT CONCAT_WS("-", "SQL", "Tutorial", "is", "fun!")AS ConcatenatedString;5
FLOOR(x)返回小于或等于 x 的最大整数  

小于或等于 1.5 的整数:

SELECT CONCAT_WS("-", "SQL", "Tutorial", "is", "fun!")AS ConcatenatedString;6
GREATEST(expr1, expr2, expr3, ...)返回列表中的最大值

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

SELECT CONCAT_WS("-", "SQL", "Tutorial", "is", "fun!")AS ConcatenatedString;7

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

SELECT CONCAT_WS("-", "SQL", "Tutorial", "is", "fun!")AS ConcatenatedString;8
LEAST(expr1, expr2, expr3, ...)返回列表中的最小值

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

SELECT CONCAT_WS("-", "SQL", "Tutorial", "is", "fun!")AS ConcatenatedString;9

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

SELECT FIELD("c", "a", "b", "c", "d", "e");0
LN返回数字的自然对数

返回 2 的自然对数:

SELECT FIELD("c", "a", "b", "c", "d", "e");1
LOG(x)返回自然对数(以 e 为底的对数)  
SELECT FIELD("c", "a", "b", "c", "d", "e");2
LOG10(x)返回以 10 为底的对数  
SELECT FIELD("c", "a", "b", "c", "d", "e");3
LOG2(x)返回以 2 为底的对数

返回以 2 为底 6 的对数:

SELECT FIELD("c", "a", "b", "c", "d", "e");4
MAX(expression)返回字段 expression 中的最大值

返回数据表 Products 中字段 Price 的最大值:

SELECT FIELD("c", "a", "b", "c", "d", "e");5
MIN(expression)返回字段 expression 中的最小值

返回数据表 Products 中字段 Price 的最小值:

SELECT FIELD("c", "a", "b", "c", "d", "e");6
MOD(x,y)返回 x 除以 y 以后的余数 

5 除于 2 的余数:

SELECT FIELD("c", "a", "b", "c", "d", "e");7
PI()返回圆周率(3.141593)  
SELECT FIELD("c", "a", "b", "c", "d", "e");8
POW(x,y)返回 x 的 y 次方 

2 的 3 次方:

SELECT FIELD("c", "a", "b", "c", "d", "e");9
POWER(x,y)返回 x 的 y 次方 

2 的 3 次方:

SELECT FIND_IN_SET("c", "a,b,c,d,e");0
RADIANS(x)将角度转换为弧度  

180 度转换为弧度:

SELECT FIND_IN_SET("c", "a,b,c,d,e");1
RAND()返回 0 到 1 的随机数  
SELECT FIND_IN_SET("c", "a,b,c,d,e");2
ROUND(x)返回离 x 最近的整数
SELECT FIND_IN_SET("c", "a,b,c,d,e");3
SIGN(x)返回 x 的符号,x 是负数、0、正数分别返回 -1、0 和 1 
SELECT FIND_IN_SET("c", "a,b,c,d,e");4
SIN(x)求正弦值(参数是弧度)  
SELECT FIND_IN_SET("c", "a,b,c,d,e");5
SQRT(x)返回x的平方根  

25 的平方根:

SELECT FIND_IN_SET("c", "a,b,c,d,e");6
SUM(expression)返回指定字段的总和

计算 OrderDetails 表中字段 Quantity 的总和:

SELECT FIND_IN_SET("c", "a,b,c,d,e");7
TAN(x)求正切值(参数是弧度)
SELECT FIND_IN_SET("c", "a,b,c,d,e");8
TRUNCATE(x,y)返回数值 x 保留到小数点后 y 位的值(与 ROUND 最大的区别是不会进行四舍五入)
SELECT FIND_IN_SET("c", "a,b,c,d,e");9

MySQL 日期函数描述实例

函数名

ADDDATE(d,n)计算起始日期 d 加上 n 天的日期
SELECT FORMAT(250500.5634, 2);     -- 输出 250,500.560
ADDTIME(t,n)时间 t 加上 n 秒的时间
SELECT FORMAT(250500.5634, 2);     -- 输出 250,500.561
CURDATE()返回当前日期
SELECT FORMAT(250500.5634, 2);     -- 输出 250,500.562
CURRENT_DATE()返回当前日期
SELECT FORMAT(250500.5634, 2);     -- 输出 250,500.563
CURRENT_TIME返回当前时间
SELECT FORMAT(250500.5634, 2);     -- 输出 250,500.564
CURRENT_TIMESTAMP()返回当前日期和时间
SELECT FORMAT(250500.5634, 2);     -- 输出 250,500.565
CURTIME()返回当前时间
SELECT FORMAT(250500.5634, 2);     -- 输出 250,500.566
DATE()从日期或日期时间表达式中提取日期值
SELECT FORMAT(250500.5634, 2);     -- 输出 250,500.567
DATEDIFF(d1,d2)计算日期 d1->d2 之间相隔的天数
SELECT FORMAT(250500.5634, 2);     -- 输出 250,500.568
DATE_ADD(d,INTERVAL expr type)计算起始日期 d 加上一个时间段后的日期
SELECT FORMAT(250500.5634, 2);     -- 输出 250,500.569
DATE_FORMAT(d,f)按表达式 f的要求显示日期 d
SELECT INSERT("google.com", 1, 6, "test");  -- 输出:test.com0
DATE_SUB(date,INTERVAL expr type)函数从日期减去指定的时间间隔。

Orders 表中 OrderDate 字段减去 2 天:

SELECT INSERT("google.com", 1, 6, "test");  -- 输出:test.com1
DAY(d)返回日期值 d 的日期部分
SELECT INSERT("google.com", 1, 6, "test");  -- 输出:test.com2
DAYNAME(d)返回日期 d 是星期几,如 Monday,Tuesday
SELECT INSERT("google.com", 1, 6, "test");  -- 输出:test.com3
DAYOFMONTH(d)计算日期 d 是本月的第几天
SELECT INSERT("google.com", 1, 6, "test");  -- 输出:test.com4
DAYOFWEEK(d)日期 d 今天是星期几,1 星期日,2 星期一,以此类推
SELECT INSERT("google.com", 1, 6, "test");  -- 输出:test.com5
DAYOFYEAR(d)计算日期 d 是本年的第几天
SELECT INSERT("google.com", 1, 6, "test");  -- 输出:test.com6
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 INSERT("google.com", 1, 6, "test");  -- 输出:test.com7
FROM_DAYS(n)计算从 0000 年 1 月 1 日开始 n 天后的日期
SELECT INSERT("google.com", 1, 6, "test");  -- 输出:test.com8
HOUR(t)返回 t 中的小时值
SELECT INSERT("google.com", 1, 6, "test");  -- 输出:test.com9
LAST_DAY(d)返回给给定日期的那一月份的最后一天
SELECT LOCATE('st','myteststring');  -- 50
LOCALTIME()返回当前日期和时间
SELECT LOCATE('st','myteststring');  -- 51
LOCALTIMESTAMP()返回当前日期和时间
SELECT LOCATE('st','myteststring');  -- 52
MAKEDATE(year, day-of-year)基于给定参数年份 year 和所在年中的天数序号 day-of-year 返回一个日期
SELECT LOCATE('st','myteststring');  -- 53
MAKETIME(hour, minute, second)组合时间,参数分别为小时、分钟、秒
SELECT LOCATE('st','myteststring');  -- 54
MICROSECOND(date)返回日期参数所对应的毫秒数
SELECT LOCATE('st','myteststring');  -- 55
MINUTE(t)返回 t 中的分钟值
SELECT LOCATE('st','myteststring');  -- 56
MONTHNAME(d)返回日期当中的月份名称,如 Janyary
SELECT LOCATE('st','myteststring');  -- 57
MONTH(d)返回日期d中的月份值,1 到 12
SELECT LOCATE('st','myteststring');  -- 58
NOW()返回当前日期和时间
SELECT LOCATE('st','myteststring');  -- 59
PERIOD_ADD(period, number)为 年-月 组合日期添加一个时段
SELECT CHAR_LENGTH("test") AS LengthOfString;00
PERIOD_DIFF(period1, period2)返回两个时段之间的月份差值
SELECT CHAR_LENGTH("test") AS LengthOfString;01
QUARTER(d)返回日期d是第几季节,返回 1 到 4
SELECT CHAR_LENGTH("test") AS LengthOfString;02
SECOND(t)返回 t 中的秒钟值
SELECT CHAR_LENGTH("test") AS LengthOfString;03
SEC_TO_TIME(s)将以秒为单位的时间 s 转换为时分秒的格式
SELECT CHAR_LENGTH("test") AS LengthOfString;04
STR_TO_DATE(string, format_mask)将字符串转变为日期
SELECT CHAR_LENGTH("test") AS LengthOfString;05
SUBDATE(d,n)日期 d 减去 n 天后的日期
SELECT CHAR_LENGTH("test") AS LengthOfString;06
SUBTIME(t,n)时间 t 减去 n 秒的时间
SELECT CHAR_LENGTH("test") AS LengthOfString;07
SYSDATE()返回当前日期和时间
SELECT CHAR_LENGTH("test") AS LengthOfString;08
TIME(expression)提取传入表达式的时间部分
SELECT CHAR_LENGTH("test") AS LengthOfString;09
TIME_FORMAT(t,f)按表达式 f 的要求显示时间 t
SELECT CHAR_LENGTH("test") AS LengthOfString;10
TIME_TO_SEC(t)将时间 t 转换为秒
SELECT CHAR_LENGTH("test") AS LengthOfString;11
TIMEDIFF(time1, time2)计算时间差值
SELECT CHAR_LENGTH("test") AS LengthOfString;12
TIMESTAMP(expression, interval)单个参数时,函数返回日期或日期时间表达式;有2个参数时,将参数加和
SELECT CHAR_LENGTH("test") AS LengthOfString;13
TO_DAYS(d)计算日期 d 距离 0000 年 1 月 1 日的天数
SELECT CHAR_LENGTH("test") AS LengthOfString;14
WEEK(d)计算日期 d 是本年的第几个星期,范围是 0 到 53
SELECT CHAR_LENGTH("test") AS LengthOfString;15
WEEKDAY(d)日期 d 是星期几,0 表示星期一,1 表示星期二
SELECT CHAR_LENGTH("test") AS LengthOfString;16
WEEKOFYEAR(d)计算日期 d 是本年的第几个星期,范围是 0 到 53
SELECT CHAR_LENGTH("test") AS LengthOfString;17
YEAR(d)返回年份
SELECT CHAR_LENGTH("test") AS LengthOfString;18
YEARWEEK(date, mode)返回年份及第几周(0到53),mode 中 0 表示周天,1表示周一,以此类推
SELECT CHAR_LENGTH("test") AS LengthOfString;19

MySQL 高级函数描述实例

函数名

BIN(x)返回 x 的二进制编码

15 的 2 进制编码:

SELECT CHAR_LENGTH("test") AS LengthOfString;20
BINARY(s)将字符串 s 转换为二进制字符串
SELECT CHAR_LENGTH("test") AS LengthOfString;21
SELECT CHAR_LENGTH("test") AS LengthOfString;22
CASE 表示函数开始,END 表示函数结束。如果 condition1 成立,则返回 result1, 如果 condition2 成立,则返回 result2,当全部不成立则返回 result,而当有一个成立之后,后面的就不执行了。
SELECT CHAR_LENGTH("test") AS LengthOfString;23
CAST(x AS type)转换数据类型

字符串日期转换为日期:

SELECT CHAR_LENGTH("test") AS LengthOfString;24
COALESCE(expr1, expr2, ...., expr_n)返回参数中的第一个非空表达式(从左向右)
SELECT CHAR_LENGTH("test") AS LengthOfString;25
CONNECTION_ID()返回服务器的连接数
SELECT CHAR_LENGTH("test") AS LengthOfString;26
CONV(x,f1,f2)返回 f1 进制数变成 f2 进制数
SELECT CHAR_LENGTH("test") AS LengthOfString;27
CONVERT(s USING cs)函数将字符串 s 的字符集变成 cs
SELECT CHAR_LENGTH("test") AS LengthOfString;28
CURRENT_USER()返回当前用户
SELECT CHAR_LENGTH("test") AS LengthOfString;29
DATABASE()返回当前数据库名
SELECT CHAR_LENGTH("test") AS LengthOfString;30
IF(expr,v1,v2)如果表达式 expr 成立,返回结果 v1;否则,返回结果 v2。
SELECT CHAR_LENGTH("test") AS LengthOfString;31
IFNULL(v1,v2)如果 v1 的值不为 NULL,则返回 v1,否则返回 v2。
SELECT CHAR_LENGTH("test") AS LengthOfString;32
ISNULL(expression)判断表达式是否为 NULL
SELECT CHAR_LENGTH("test") AS LengthOfString;33
LAST_INSERT_ID()返回最近生成的 AUTO_INCREMENT 值
SELECT CHAR_LENGTH("test") AS LengthOfString;34
NULLIF(expr1, expr2)比较两个字符串,如果字符串 expr1 与 expr2 相等 返回 NULL,否则返回 expr1
SELECT CHAR_LENGTH("test") AS LengthOfString;35
SESSION_USER()返回当前用户
SELECT CHAR_LENGTH("test") AS LengthOfString;36
SYSTEM_USER()返回当前用户
SELECT CHAR_LENGTH("test") AS LengthOfString;37
USER()返回当前用户
SELECT CHAR_LENGTH("test") AS LengthOfString;38
VERSION()返回数据库的版本号
SELECT CHAR_LENGTH("test") AS LengthOfString;39

欢迎 发表评论: