Mysql函数归纳

记录:
        Mysql函数查询与理解.
1.字符串处理函数

序号 名词 功能描述 sql例子
1 ASCII(s) 返回字符串s的第一个字符的ASCII码。 SELECT  ASCII(A.GIRL_NAME) FROM t_girl_a  A;
2 CHAR_LENGTH(s) 返回字符串s的字符数 SELECT  CHAR_LENGTH(GIRL_NAME) FROM t_girl_a;
3 CHARACTER_LENGTH(s) 返回字符串s的字符数 SELECT CHARACTER_LENGTH('HelloWorld');
4 CONCAT(s1,s2...sn) 字符串s1,s2等多个字符串合并为一个字符串 SELECT CONCAT('Hello','World','Python');
5 CONCAT_WS(x, s1,s2...sn) 同CONCAT(s1,s2,...)函数,但是每个字符串之间要加上x,x可以是分隔符 SELECT CONCAT_WS('#','Hello','World','Python');
6 FIELD(s,s1,s2...) 返回第一个字符串s在字符串列表(s1,s2...)中的位置 SELECT FIELD('World','Hello','World','Python');
7 FIND_IN_SET(s1,s2) 返回在字符串s2中与s1匹配的字符串的位置 SELECT FIND_IN_SET('W','U,W,E,R');
8 FORMAT(x,n) 函数可以将数字x进行格式化"#,###.##",将x保留到小数点后n位,最后一位四舍五入。 SELECT FORMAT(125.85272,3);
9 INSERT(s1,x,len,s2) 字符串s2替换s1的x位置开始长度为len的字符串 SELECT INSERT('HelloWorldPython',11,6,'Java');
10 LOCATE(s1,s) 从字符串s中获取s1的开始位置 SELECT LOCATE('a','Java');
11 LCASE(s) 将字符串s的所有字母变成小写字母 SELECT LCASE('Java');
12 LEFT(s,n) 返回字符串s的前n个字符 SELECT LEFT('Java',2);
13 LOWER(s) 将字符串s的所有字母变成小写字母 SELECT LOWER('Java');
14 LPAD(s1,len,s2) 在字符串s1的开始处填充字符串s2,使字符串长度达到len SELECT LPAD('23',12,'0');
15 LTRIM(s) 去掉字符串s开始处的空格 SELECT LTRIM('  Java');
16 MID(s,n,len) 从字符串s的n位置截取长度为len的子字符串,同SUBSTRING(s,n,len) SELECT MID('Java',2,2);
17 POSITION(s1 IN s) 从字符串s中获取s1的开始位置 SELECT POSITION('G' IN 'D Cup Girl');
18 REPEAT(s,n) 将字符串s重复n次 SELECT REPEAT('Java',3);
19 REPLACE(s,s1,s2) 将字符串s2替代字符串s中的字符串s1 SELECT REPLACE('Gava','G','J');
20 REVERSE(s) 将字符串s的顺序反过来 SELECT REVERSE('avaJ');
21 RIGHT(s,n) 返回字符串s的后n个字符 SELECT RIGHT('python',2);
22 RPAD(s1,len,s2) 在字符串s1的结尾处添加字符串s2,使字符串的长度达到len SELECT LPAD('23',12,'0');
23 RTRIM(s) 去掉字符串s结尾处的空格 SELECT LTRIM('Java  ');
24 SPACE(n) 返回n个空格 SELECT SPACE(10);
25 STRCMP(s1,s2) 比较字符串s1和s2,如果s1与s2相等返回0,如果s1>s2返回1,如果s1<s2返回-1 SELECT STRCMP('Java', 'Java');SELECT STRCMP('Z', 'A');        
SELECT STRCMP('A', 'Z');
26 SUBSTR(s, start, length) 从字符串s的start位置截取长度为length的子字符串 SELECT SUBSTR('Java', 2, 3);
27 SUBSTRING(s, start, length) 从字符串s的start位置截取长度为length的子字符串 SELECT SUBSTRING('Java', 2, 2);
28 SUBSTRING_INDEX(s, delimiter, number) 返回从字符串s的第number个出现的分隔符delimiter之后的子串。如果number是正数,返回第number个字符左边的字符串。如果number是负数,返回第(number的绝对值(从右边数))个字符右边的字符串。 SELECT SUBSTRING_INDEX('java#python','#',1);
SELECT SUBSTRING_INDEX('java#python','#',-1);
29 TRIM(s) 去掉字符串s开始和结尾处的空格 SELECT TRIM('  java#python  ');
30 UCASE(s) 将字符串转换为大写 SELECT UCASE('JavaPython');
31 UPPER(s) 将字符串转换为大写 SELECT UPPER('JavaPython');

2.数字处理函数

序号 名词 功能描述 sql例子
1 ABS(x) 返回x的绝对值   SELECT ABS(-153);
2 ACOS(x) 求x的反余弦值(参数是弧度) SELECT ACOS(0.35);
3 ASIN(x) 求反正弦值(参数是弧度) SELECT ASIN(0.35);
4 ATAN(x) 求反正切值(参数是弧度) SELECT ATAN(2.9);
5 ATAN2(n, m) 求反正切值(参数是弧度) SELECT ATAN2(-0.7, 2);
6 AVG(expression) 返回一个表达式的平均值,expression是一个字段 SELECT AVG(AGE) FROM t_girl_a;
7 CEIL(x) 返回大于或等于x的最小整数  SELECT CEIL(5.6);
8 CEILING(x) 返回大于或等于x的最小整数  SELECT CEILING(5.6);
9 COS(x) 求余弦值(参数是弧度) SELECT COS(3);
10 COT(x) 求余切值(参数是弧度) SELECT COT(6);
11 COUNT(expression) 返回查询的记录总数,expression参数是一个字段或者*号 SELECT COUNT(1) FROM t_girl_a;
12 DEGREES(x) 将弧度转换为角度   SELECT DEGREES(3.1415926);
13 n DIV m 整除,n为被除数,m为除数 SELECT 12 DIV 2;
14 EXP(x) 返回e的x次方   SELECT EXP(5);
15 FLOOR(x) 返回小于或等于x的最大整数   SELECT FLOOR(3.5);
16 GREATEST(expr1, expr2, ...) 返回列表中的最大值 SELECT GREATEST(29,30,31,99,23);
17 LEAST(expr1, expr2, ...) 返回列表中的最小值 SELECT LEAST(29,30,31,99,23);
18 LN 返回数字的自然对数 SELECT LN(10);
19 LOG(x) 返回自然对数(以e为底的对数)   SELECT LOG(19);
20 LOG10(x) 返回以10为底的对数   SELECT LOG10(1000);
21 LOG2(x) 返回以2为底的对数 SELECT LOG2(10);
22 MAX(expression) 返回字段expression中的最大值 SELECT MAX(AGE) FROM t_girl_a;
23 MIN(expression) 返回字段expression中的最小值 SELECT MIN(AGE) FROM t_girl_a;
24 MOD(x,y) 返回x除以y以后的余数  SELECT MOD(9,2);
25 PI() 返回圆周率(3.141593)   SELECT PI();
26 POW(x,y) 返回x的y次方  SELECT POW(2,5);
27 POWER(x,y) 返回x的y次方  SELECT POWER(2,5);
28 RADIANS(x) 将角度转换为弧度   SELECT RADIANS(30);
29 RAND() 返回0到1的随机数   SELECT RAND();
30 ROUND(x) 返回离x最近的整数 SELECT ROUND(1.9125);
31 SIGN(x) 返回x的符号,x是负数、0、正数分别返回-1、0和1  SELECT SIGN(-10);
32 SIN(x) 求正弦值(参数是弧度)   SELECT SIN(RADIANS(45));
33 SQRT(x) 返回x的平方根   SELECT SQRT(36);
34 SUM(expression) 返回指定字段的总和 SELECT SUM(AGE) FROM t_girl_a;
35 TAN(x) 求正切值(参数是弧度) SELECT TAN(2.75);
36 TRUNCATE(x,y) 返回数值x保留到小数点后y位的值(与ROUND最大的区别是不会进行四舍五入) SELECT TRUNCATE(1.52267,3);

3.日期处理函数

序号 名词 功能描述 sql例子
1 ADDDATE(d,n) 计算起始日期d加上n天的日期 SELECT ADDDATE('2020-01-02', INTERVAL 8 DAY);
2 ADDTIME(t,n) 时间t加上n秒的时间 SELECT ADDTIME('2020-01-02 12:12:12', 8);
3 CURDATE() 返回当前日期 SELECT CURDATE();
4 CURRENT_DATE() 返回当前日期 SELECT CURRENT_DATE();
5 CURRENT_TIME 返回当前时间 SELECT CURRENT_TIME();
6 CURRENT_TIMESTAMP() 返回当前日期和时间 SELECT CURRENT_TIMESTAMP();
7 CURTIME() 返回当前时间 SELECT CURTIME();
8 DATE() 从日期或日期时间表达式中提取日期值 SELECT DATE('2020-01-02');
9 DATEDIFF(d1,d2) 计算日期d1->d2之间相隔的天数 SELECT DATEDIFF('2020-01-12','2020-01-03');
10 DATE_ADD(d INTERVAL expr type) 计算起始日期d加上一个时间段后的日期 SELECT DATE_ADD('2020-01-02', INTERVAL 8 DAY);
11 DATE_FORMAT(d,f) 按表达式f的要求显示日期d SELECT DATE_FORMAT('2020-01-02 10:11:12','%Y-%c-%d %H:%i:%S');
12 DATE_SUB(date,INTERVAL expr type) 函数从日期减去指定的时间间隔。 SELECT DATE_SUB('2020-01-02', INTERVAL 8 DAY);
13 DAY(d) 返回日期值d的日期部分 SELECT DAY('2020-01-02');
14 DAYNAME(d) 返回日期d是星期几,如Monday,Tuesday SELECT DAYNAME('2020-01-02');
15 DAYOFMONTH(d) 计算日期d是本月的第几天 SELECT DAYOFMONTH('2020-01-02 10:11:12');
16 DAYOFWEEK(d) 日期d今天是星期几,1星期日,2星期一,以此类推 SELECT DAYOFWEEK('2020-01-02 10:11:12');
17 DAYOFYEAR(d) 计算日期d是本年的第几天 SELECT DAYOFYEAR('2020-01-09 10:11:12');
18 EXTRACT(type FROM d) 从日期d中获取指定的值,type指定返回的值。 SELECT EXTRACT(MINUTE FROM '2020-01-02 10:11:12');
19 FROM_DAYS(n) 计算从0000年1月1日开始n天后的日期 SELECT FROM_DAYS(2020);
20 HOUR(t) 返回t中的小时值 SELECT HOUR('10:11:12');
21 LAST_DAY(d) 返回给给定日期的那一月份的最后一天 SELECT LAST_DAY('2020-01-09 10:11:12');
22 LOCALTIME() 返回当前日期和时间 SELECT LOCALTIME();
23 LOCALTIMESTAMP() 返回当前日期和时间 SELECT LOCALTIMESTAMP();
24 MAKEDATE(year, day-of-year) 基于给定参数年份year和所在年中的天数序号day-of-year返回一个日期 SELECT MAKEDATE(2020,200);
25 MAKETIME(hour, minute, second) 组合时间,参数分别为小时、分钟、秒 SELECT MAKETIME(10,11,12);
26 MICROSECOND(date) 返回日期参数所对应的微秒数 SELECT MICROSECOND("2020-01-02 10:11:12.000056");
27 MINUTE(t) 返回t中的分钟值 SELECT MINUTE('10:11:12');
28 MONTHNAME(d) 返回日期当中的月份名称,如November SELECT MONTHNAME('2020-01-02 10:11:12');
29 MONTH(d) 返回日期d中的月份值,1到12 SELECT MONTH('2020-01-02 10:11:12');
30 NOW() 返回当前日期和时间 SELECT NOW();
31 PERIOD_ADD(period, number) 为年-月组合日期添加一个时段 SELECT PERIOD_ADD(202001,5);
32 PERIOD_DIFF(period1, period2) 返回两个时段之间的月份差值 SELECT PERIOD_DIFF(202010, 202001);
33 QUARTER(d) 返回日期d是第几季节,返回1到4 SELECT QUARTER('2020-01-02 10:11:12');
34 SECOND(t) 返回t中的秒钟值 SELECT SECOND('10:11:12');
35 SEC_TO_TIME(s) 将以秒为单位的时间s转换为时分秒的格式 SELECT SEC_TO_TIME(5320);
36 STR_TO_DATE(string, format_mask) 将字符串转变为日期 SELECT STR_TO_DATE('2020-01-03 10:11:12', '%Y-%m-%d %H:%i:%s');
37 SUBDATE(d,n) 日期d减去n天后的日期 SELECT SUBDATE('2020-01-03 10:11:12',2);
38 SUBTIME(t,n) 时间t减去n秒的时间 SELECT SUBTIME('2020-01-03 10:11:12',13)
39 SYSDATE() 返回当前日期和时间 SELECT SYSDATE();
40 TIME(expression) 提取传入表达式的时间部分 SELECT TIME('10:11:12');
41 TIME_FORMAT(t,f) 按表达式f的要求显示时间t SELECT TIME_FORMAT('10:11:12','%i');
42 TIME_TO_SEC(t) 将时间t转换为秒 SELECT TIME_TO_SEC('10:11:12');
43 TIMEDIFF(time1, time2) 计算时间差值 SELECT TIMEDIFF('10:20:12','10:11:12');
44 TIMESTAMP(expression, interval) 单个参数时,函数返回日期或日期时间表达式;有2个参数时,将参数加和 SELECT TIMESTAMP('2020-01-03','10:20:12');
45 TO_DAYS(d) 计算日期d距离0000年1月1日的天数 SELECT TO_DAYS('2020-01-03 10:11:12');
46 WEEK(d) 计算日期d是本年的第几个星期,范围是0到53 SELECT WEEK('2020-01-09 10:11:12');
47 WEEKDAY(d) 日期d是星期几,0表示星期一,1表示星期二 SELECT WEEKDAY('2020-01-09 10:11:12');
48 WEEKOFYEAR(d) 计算日期d是本年的第几个星期,范围是0到53 SELECT WEEKOFYEAR('2020-01-01 10:11:12');
49 YEAR(d) 返回年份 SELECT YEAR('2020-01-01 10:11:12');
50 YEARWEEK(date, mode) 返回年份及第几周(0到53),mode中0表示周天,1表示周一,以此类推 SELECT YEARWEEK('2020-12-11');

4.其它函数

序号 名词 功能描述 sql例子
1 BIN(x) 返回x的二进制编码 SELECT BIN(16);
2 BINARY(s) 将字符串s转换为二进制字符串 SELECT BINARY 'RUNOOB';
3 CASE expression
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
   ...
    WHEN conditionN THEN resultN
    ELSE result
END
CASE表示函数开始,END表示函数结束。如果condition1成立,则返回result1,如果condition2成立,则返回result2,当全部不成立则返回result,而当有一个成立之后,后面的就不执行了。 SELECT CASE
     WHEN A.AGE < 29
     THEN 'Y'
     WHEN A.AGE > 29
     THEN 'Z'
     ELSE 'X'
     END AS 年龄 FROM t_girl_a A;
4 CAST(x AS type) 转换数据类型 SELECT CAST('2020-01-03' AS DATE);
5 COALESCE(expr1, expr2, ...., expr_n) 返回参数中的第一个非空表达式(从左向右) SELECT COALESCE(NULL,NULL,'Java','Py',NULL);
6 CONNECTION_ID() 返回服务器的连接数 SELECT CONNECTION_ID();
7 CONV(x,f1,f2) 返回f1进制数变成f2进制数 SELECT CONV(16,11,2);
8 CONVERT(s USING cs) 函数将字符串s的字符集变成cs SELECT CHARSET('ABC');SELECT CHARSET(CONVERT('ABC' USING gbk));
9 CURRENT_USER() 返回当前用户 SELECT CURRENT_USER();
10 DATABASE() 返回当前数据库名 SELECT DATABASE();
11 IF(expr,v1,v2) 如果表达式expr成立,返回结果v1;否则,返回结果v2。 SELECT IF(10 > 0,'y','n')
12 IFNULL(v1,v2) 如果v1的值不为NULL,则返回v1,否则返回v2。 SELECT IFNULL(null,'Java');SELECT IFNULL('python','Java');
13 ISNULL(expression) 判断表达式是否为NULL SELECT ISNULL(null);SELECT ISNULL('zz');
14 LAST_INSERT_ID() 返回最近生成的AUTO_INCREMENT值 SELECT LAST_INSERT_ID();
15 NULLIF(expr1, expr2) 比较两个字符串,如果字符串expr1与expr2相等返回NULL,否则返回expr1 SELECT NULLIF(30, 30);SELECT NULLIF(30, 35);
16 SESSION_USER() 返回当前用户 SELECT SESSION_USER();
17 SYSTEM_USER() 返回当前用户 SELECT SYSTEM_USER();
18 USER() 返回当前用户 SELECT USER();
19 VERSION() 返回数据库的版本号 SELECT VERSION();

5.例子中使用的建表语句

CREATE TABLE `t_girl_a` (
  `GIRL_ID` BIGINT(16) NOT NULL AUTO_INCREMENT COMMENT 'ID号',
  `GIRL_NAME` VARCHAR(64) COLLATE utf8_bin DEFAULT NULL COMMENT '姓名',
  `AGE` INT(6) DEFAULT NULL COMMENT '年龄',
  `INSERT_TIME` timestamp NOT NULL ON UPDATE CURRENT_TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '插入或更新时间',
   PRIMARY KEY `pk_t_girl_a_girl_id` (GIRL_ID)
) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='女孩信息';

以上,感谢.

发布了183 篇原创文章 · 获赞 40 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/zhangbeizhen18/article/details/103824584
今日推荐