Mysql函数归纳

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

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

2.数字处理函数

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

3.日期处理函数

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

4.其它函数

序号名词功能描述sql例子
1BIN(x)返回x的二进制编码SELECT BIN(16);
2BINARY(s)将字符串s转换为二进制字符串SELECT BINARY 'RUNOOB';
3CASE 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;
4CAST(x AS type)转换数据类型SELECT CAST('2020-01-03' AS DATE);
5COALESCE(expr1, expr2, ...., expr_n)返回参数中的第一个非空表达式(从左向右)SELECT COALESCE(NULL,NULL,'Java','Py',NULL);
6CONNECTION_ID()返回服务器的连接数SELECT CONNECTION_ID();
7CONV(x,f1,f2)返回f1进制数变成f2进制数SELECT CONV(16,11,2);
8CONVERT(s USING cs)函数将字符串s的字符集变成csSELECT CHARSET('ABC');SELECT CHARSET(CONVERT('ABC' USING gbk));
9CURRENT_USER()返回当前用户SELECT CURRENT_USER();
10DATABASE()返回当前数据库名SELECT DATABASE();
11IF(expr,v1,v2)如果表达式expr成立,返回结果v1;否则,返回结果v2。SELECT IF(10 > 0,'y','n')
12IFNULL(v1,v2)如果v1的值不为NULL,则返回v1,否则返回v2。SELECT IFNULL(null,'Java');SELECT IFNULL('python','Java');
13ISNULL(expression)判断表达式是否为NULLSELECT ISNULL(null);SELECT ISNULL('zz');
14LAST_INSERT_ID()返回最近生成的AUTO_INCREMENT值SELECT LAST_INSERT_ID();
15NULLIF(expr1, expr2)比较两个字符串,如果字符串expr1与expr2相等返回NULL,否则返回expr1SELECT NULLIF(30, 30);SELECT NULLIF(30, 35);
16SESSION_USER()返回当前用户SELECT SESSION_USER();
17SYSTEM_USER()返回当前用户SELECT SYSTEM_USER();
18USER()返回当前用户SELECT USER();
19VERSION()返回数据库的版本号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='女孩信息';

以上,感谢.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值