MySQL函数

字符串函数

-- ASCII 返回字符串 s 的第一个字符的 ASCII 码。
SELECT ASCII(user_code) AS NumCodeOfFirstChar FROM `user`;
-- CHAR_LENGTH(s) 返回字符串 s 的字符数
SELECT CHAR_LENGTH("RUNOOB") LengthOfString;
-- CHARACTER_LENGTH(s) 返回字符串 s 的字符数
SELECT CHARACTER_LENGTH("RUNOOB") LengthOfString;
-- CONCAT(s1,s2...sn) 字符串 s1,s2 等多个字符串合并为一个字符串
SELECT CONCAT("SQL", "Runoob", "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...)中的位置
SELECT FIELD("c", "ac", "b", "c", "d", "e");
-- FIND_IN_SET(s1,s2) 返回在字符串s2中与s1匹配的字符串的位置
SELECT FIND_IN_SET("b", "a,b,c");
-- FORMAT(x,n) 函数可以将数字 x 进行格式化 "#,###.##", 将 x 保留到小数点后 n 位,最后一位四舍五入。
SELECT FORMAT(250500.5634, 1);
-- INSERT(s1,x,len,s2) 字符串 s2 替换 s1 的 x 位置开始长度为 len 的字符串
SELECT INSERT("google.com", 1, 6, "runoob"); 
-- LOCATE(s1,s) 从字符串 s 中获取 s1 的开始位置
SELECT LOCATE('st','myteststring');
-- LCASE(s) 将字符串 s 的所有字母变成小写字母
SELECT LCASE('RUNOOB')
-- LEFT(s,n) 返回字符串 s 的前 n 个字符
SELECT LEFT('runoob',2);
-- LOWER(s) 将字符串 s 的所有字母变成小写字母
SELECT LOWER('RUNOOB');
-- LPAD(s1,len,s2) 在字符串 s1 的开始处填充字符串 s2,使字符串长度达到 len
SELECT LPAD('abc',5,'xx')
-- LTRIM(s) 去掉字符串 s 开始处的空格
SELECT LTRIM("    RUNOOB") AS LeftTrimmedString;
SELECT RTRIM("    RUNOOB  ") AS LeftTrimmedString;
SELECT TRIM("    RUNOOB  ") AS LeftTrimmedString;
-- MID(s,n,len) 从字符串 s 的 n 位置截取长度为 len 的子字符串,同 SUBSTRING(s,n,len)
SELECT MID("runoob",2,2);
-- POSITION(s1 IN s) 从字符串 s 中获取 s1 的开始位置
SELECT POSITION("a" IN "abc")
-- REPEAT(s,n) 将字符串 s 重复 n 次
SELECT REPEAT("a",5)
-- REPLACE(s,s1,s2) 将字符串 s2 替代字符串 s 中的字符串 s1
SELECT REPLACE('abc','a','x');
-- REVERSE(s) 将字符串s的顺序反过来
SELECT REVERSE("abc");
-- RIGHT(s,n) 返回字符串 s 的后 n 个字符
SELECT RIGHT("runoob",3);
-- RPAD(s1,len,s2) 在字符串 s1 的结尾处添加字符串 s2,使字符串的长度达到 len
SELECT RPAD("abc",6,"xxx");
-- SPACE(n) 返回n个空格
SELECT SPACE(2);
-- STRCMP(s1,s2) 比较字符串s1和s2,如果s1和s2相等返回0,如果s1>s2返回1,如果s1<s2返回-1
SELECT STRCMP("abc","ab");
-- SUBSTR(s, start, length) 从字符串 s 的 start 位置截取长度为 length 的子字符串
SELECT SUBSTR("runoob",1,2);
SELECT SUBSTRING("runoob", 1, 2)
-- SUBSTRING_INDEX(s, delimiter, number) 返回从字符串 s 的第 number 个出现的分隔符 delimiter 之后的子串。如果 number 是正数,返回第 number 个字符左边的字符串。如果 number 是负数,返回第(number 的绝对值(从右边数))个字符右边的字符串。
SELECT SUBSTRING_INDEX('a*b','*',2);
SELECT SUBSTRING_INDEX('a*b','*',-1);
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('a*b*c*d*e','*',3),'*',-1);
-- UCASE(s) 将字符串转换为大写
SELECT UCASE("runoob")
-- UPPER(s) 将字符串转换为大写
SELECT UPPER("runoob")

数字函数

-- ABS(x) 返回 x 的绝对值
SELECT ABS(-1)
-- ACOS(x) 求 x 的反余弦值(单位为弧度),x 为一个数值
SELECT ACOS(0.4);
-- ASIN(x) 求反正弦值(单位为弧度),x 为一个数值
SELECT ASIN(0.4);
-- ATAN(x) 求反正切值(单位为弧度),x 为一个数值
SELECT ATAN(2.5);
-- ATAN2(n, m) 求反正切值(单位为弧度)
SELECT ATAN2(-0.8, 2);
-- AVG(expression) 返回一个表达式的平均值,expression 是一个字段
SELECT AVG(type) AS AverageType FROM User;
-- CEIL(x)  CEILING(x) 返回大于或等于 x 的最小整数
SELECT CEIL(1.5);
SELECT CEILING(1.5);
-- COS(x) 求余弦值(参数是弧度)
SELECT COS(2);
-- COT(x) 求余切值(参数是弧度)
SELECT COT(6)
-- COUNT(expression) 返回查询的记录总数,expression 参数是一个字段或者 * 号
SELECT COUNT(id) FROM `user`;
-- DEGREES(x) 将弧度转换为角度
SELECT DEGREES(3.1415926535898);
-- n DIV m  整除,n 为被除数,m 为除数
SELECT 10 DIV 5;
-- EXP(x) 返回 e 的 x 次方
SELECT EXP(3);
-- FLOOR(x) 返回小于或等于 x 的最大整数
SELECT FLOOR(1.5);
-- GREATEST(expr1, expr2, expr3, ...) 返回列表中的最大值
SELECT GREATEST(1,5,10,15);
-- LEAST(expr1, expr2, expr3, ...) 返回列表中的最小值
SELECT LEAST(6,3,1,2);
-- LN 返回数字的自然对数,以 e 为底。
SELECT LN(3);
-- LOG(x) 或 LOG(base, x) 返回自然对数(以 e 为底的对数),如果带有 base 参数,则 base 为指定带底数。
SELECT LOG(2);
SELECT LOG(2,2);
-- LOG10(x) 返回以 10 为底的对数
SELECT LOG10(10);
-- LOG2(x) 返回以10为底的对数
SELECT LOG2(2);
-- MAX(expression) 返回字段 expression 中的最大值
SELECT MAX(id) AS LargestId FROM `user`;
-- MIN(expression) 返回字段 expression 中的最小值
SELECT MIN(id) from user;
-- MOD(x,y) x除以y的余数
SELECT MOD(6,2);
-- PI() 返回圆周率
SELECT PI();
-- POW(x,y) POWER(x,y) x 的y 次方
SELECT POW(2,3);
SELECT power(2,3);
-- RADIANS(x) 将角度转换成弧度
SELECT RADIANS(180);
-- RAND() 返回0到1随机数
SELECT RAND();
-- ROUND(x) 返回距离x最近的整数,向上取整
SELECT ROUND(9.5);
-- SIGN(x) 返回 x 的符号,x 是负数、0、正数分别返回 -1、0 和 1
SELECT SIGN(-1);
SELECT SIGN(0);
SELECT SIGN(1);
-- SIN(x) 求正弦值(参数是弧度)
SELECT SIN(25);
-- SQRT(x) 求x的平方根
SELECT SQRT(4);
-- SUM(expression) 返回指定字段的总和
SELECT SUM(id) FROM `user`;
-- TAN(x) 求正切值(参数是弧度)
SELECT TAN(45);
-- TRUNCATE(x,y) 返回数值 x 保留到小数点后 y 位的值(与 ROUND 最大的区别是不会进行四舍五入)
SELECT TRUNCATE(3.1415926,3);

日期函数

-- ADDDATE(d,n) 计算起始日期 d 加上 n 天的日期
SELECT ADDDATE("2022-06-17", INTERVAL 10 DAY);
-- ADDTIME(t,n) n 是一个时间表达式,时间 t 加上时间表达式 n 5单位为秒
SELECT ADDTIME("2022-06-17 15:51:11",5);
-- CURDATE() CURRENT_DATE() 返回当前日期 yyyy-MM-dd
SELECT CURDATE();
SELECT CURRENT_DATE();
-- CURRENT_TIME() CURTIME() 返回当前时间
SELECT CURRENT_TIME();
SELECT CURTIME();
-- CURRENT_TIMESTAMP() 返回当前日期和时间  yyyy-MM-dd HH:mm:ss
SELECT CURRENT_TIMESTAMP();
-- DATE() 从日期或日期时间表达式中提取日期值 yyyy-MM-dd
SELECT DATE("2022-06-17");
-- DATEDIFF(d1,d2) 计算日期 d1->d2 之间相隔的天数
SELECT DATEDIFF("2022-06-17","2022-06-01");
-- 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("2022-06-15", INTERVAL 10 DAY);
SELECT DATE_ADD("2022-06-15 09:34:21", INTERVAL 15 MINUTE);
SELECT DATE_ADD("2022-06-15 09:34:21", INTERVAL -3 HOUR);
SELECT DATE_ADD("2022-06-15 09:34:21", INTERVAL -3 MONTH);
-- DATE_FORMAT(d,f) 按表达式 f的要求显示日期 d
SELECT DATE_FORMAT('2011-11-11 11:11:11','%Y-%m-%d %r');
-- DATE_SUB(date,INTERVAL expr type) 函数从日期减去指定的时间间隔
SELECT id,DATE_SUB(first_login_at,INTERVAL 2 DAY) AS firstLoginAt FROM user
-- DAY(d) 返回日期值 d 的日期部分
SELECT DAY("2022-06-15");  
-- DAYNAME(d) 返回日期 d 是星期几,如 Monday,Tuesday
SELECT DAYNAME('2022-06-17 11:11:11');
-- DAYOFMONTH(d) 计算日期 d 是本月的第几天
SELECT DAYOFMONTH("2022-06-17");
-- DAYOFWEEK(d) 日期 d 今天是星期几,1 星期日,2 星期一,以此类推
SELECT DAYOFWEEK("2022-06-17");
-- DAYOFYEAR(d) 计算日期 d 是本年的第几天
SELECT DAYOFYEAR('2011-06-22 11:11:11');
-- EXTRACT(type FROM d) 从日期 d 中获取指定的值,type 指定返回的值。
SELECT EXTRACT(MINUTE FROM '2022-06-17 11:16:15');
-- FROM_DAYS(n) 	计算从 0000 年 1 月 1 日开始 n 天后的日期
SELECT FROM_DAYS(1111);
-- HOUR(t) 返回 t 中的小时值
SELECT HOUR('1:2:3')
-- LAST_DAY(d) 返回给给定日期的那一月份的最后一天
SELECT LAST_DAY("2022-06-17");
-- LOCALTIME() 返回当前日期和时间
SELECT LOCALTIME();
SELECT LOCALTIMESTAMP();
-- MAKEDATE(year, day-of-year) 基于给定参数年份 year 和所在年中的天数序号 day-of-year 返回一个日期
SELECT MAKEDATE(2022, 5);
-- MAKETIME(hour, minute, second) 组合时间,参数分别为小时、分钟、秒
SELECT MAKETIME(11, 35, 4);
-- MICROSECOND(date) 返回日期参数所对应的微秒数
SELECT MICROSECOND("2022-06-17 09:34:00.000023");
-- MINUTE(t) 返回 t 中的分钟值
SELECT MINUTE("1:2:3");
-- MONTHNAME(d) 返回日期当中的月份名称
SELECT MONTHNAME('2022-06-17 12:13:20');
-- MONTH(d) 返回日期d中的月份值,1 到 12
SELECT MONTH("2022-06-17");
-- NOW() 返回当前日期和时间
SELECT NOW();
-- PERIOD_ADD(period, number) 为 年-月 组合日期添加一个时段
SELECT PERIOD_ADD(202206,5);
-- PERIOD_DIFF(period1, period2) 返回两个时段之间的月份差值
SELECT PERIOD_DIFF(202210,202206);
-- QUARTER(d) 返回日期d是第几季节,返回 1 到 4
SELECT QUARTER("2022-06-17");
-- SECOND(t) 返回 t 中的秒钟值
SELECT SECOND('1:2:4');
-- SEC_TO_TIME(s) 将以秒为单位的时间 s 转换为时分秒的格式
SELECT SEC_TO_TIME(4320);
-- STR_TO_DATE(string, format_mask) 将字符串转变为日期
SELECT STR_TO_DATE("August 10 2022", "%M %d %Y");
-- SUBDATE(d,n) 日期 d 减去 n 天后的日期
SELECT SUBDATE('2022-06-11 11:11:11', 1);
-- SUBTIME(t,n) 时间 t 减去 n 秒的时间
SELECT SUBTIME('2022-06-11 11:11:11', 5);
-- SYSDATE() 返回当前日期和时间
SELECT SYSDATE();
-- TIME(expression) 提取传入表达式的时间部分
SELECT TIME("2022-06-17 14:00:00");
-- TIME_FORMAT(t,f) 按表达式 f 的要求显示时间 t
SELECT TIME_FORMAT('2022-06-17 12:10:13','%r');
-- TIME_TO_SEC(t) 将时间 t 转换为秒
SELECT TIME_TO_SEC('1:12:00');
-- TIMEDIFF(time1, time2) 计算时间差值
SELECT TIMEDIFF("13:10:11", "13:10:10");
-- TIMESTAMP(expression, interval) 单个参数时,函数返回日期或日期时间表达式;有2个参数时,将参数加和
SELECT TIMESTAMP("2017-07-23",  "13:10:11");
-- TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)  计算时间差,返回 datetime_expr2 − datetime_expr1 的时间差
SELECT TIMESTAMPDIFF(DAY,"2022-06-01","2022-06-17");
SELECT TIMESTAMPDIFF(MONTH,"2022-06-01","2022-06-17");
SELECT TIMESTAMPDIFF(YEAR,"2022-06-01","2022-06-17");
SELECT TIMESTAMPDIFF(MINUTE,"2022-06-01","2022-06-17");
-- TO_DAYS(d) 计算日期 d 距离 0000 年 1 月 1 日的天数
SELECT TO_DAYS("0001-01-01 01:01:01");
-- WEEK(d) WEEKOFYEAR(d) 计算日期 d 是本年的第几个星期,范围是 0 到 53
SELECT WEEK("2022-06-17");
SELECT WEEKOFYEAR("2022-06-17");
-- WEEKDAY(d) 日期 d 是星期几,0 表示星期一,1 表示星期二
SELECT WEEKDAY("2022-06-17");
--  YEAR(d) 返回年份
SELECT YEAR("2022-06-17");
-- YEARWEEK(date, mode) 返回年份及第几周(0到53),mode 中 0 表示周天,1表示周一,以此类推 表示年份以及所在的周
SELECT YEARWEEK("2022-06-17",1);

高级函数

-- BIN(x) 返回 x 的二进制编码
SELECT BIN(15);
-- BINARY(s) 将字符串 s 转换为二进制字符串
SELECT BINARY("runoob");
-- CASE expression WHEN CASE 表示函数开始,END 表示函数结束。如果 condition1 成立,则返回 result1, 如果 condition2 成立,则返回 result2,当全部不成立则返回 result,而当有一个成立之后,后面的就不执行了。
SELECT CASE 
  WHEN 1 > 0
  	THEN '1 > 0'
  WHEN 2 > 0
  	THEN '2 > 0'
  ELSE '3 > 0'
  END
-- CAST(x AS type) 转换数据类型
SELECT CAST("2022-06-17" AS DATE);
-- COALESCE(expr1, expr2, ...., expr_n) 返回参数中的第一个非空表达式(从左向右)
SELECT COALESCE(NULL, NULL, NULL, 'runoob.com', NULL, 'google.com');
-- CONNECTION_ID() 返回唯一的连接ID
SELECT CONNECTION_ID();
-- CONV(x,f1,f2) 返回 f1 进制数变成 f2 进制数
SELECT CONV(10,10,2);
-- CONVERT(s USING cs) 函数将字符串 s 的字符集变成 cs
SELECT CHARSET('ABC'); ->utf8
SELECT CHARSET(CONVERT('ABC' USING gbk));
-- CURRENT_USER() 返回当前用户
SELECT CURRENT_USER();
-- DATABASE() 返回当前数据库名
SELECT DATABASE();
-- IF(expr,v1,v2) 如果表达式 expr 成立,返回结果 v1;否则,返回结果 v2。
SELECT IF(1 > 0,'正确','错误');
-- IFNULL(v1,v2) 如果 v1 的值不为 NULL,则返回 v1,否则返回 v2
SELECT IFNULL(null,'Hello Word');
-- ISNULL(expression) 判断表达式是否为 NULL
SELECT ISNULL(NULL);
-- LAST_INSERT_ID() 返回最近生成的 AUTO_INCREMENT 值
SELECT LAST_INSERT_ID();
-- NULLIF(expr1, expr2) 比较两个字符串,如果字符串 expr1 与 expr2 相等 返回 NULL,否则返回 expr1
SELECT NULLIF(25, 25);
-- SESSION_USER() SYSTEM_USER() 返回当前用户
SELECT SESSION_USER();
SELECT SYSTEM_USER();
SELECT USER();
-- VERSION() 返回数据库版本号
SELECT VERSION();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值