记录:
        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='女孩信息';

以上,感谢.