有几天没发帖子了,随着新东家对于数据库的操作相对来说还是比较复杂的,所以也是决定重新温习一下MySQL的函数,以便自己在以后的工作中可以更加顺畅的进行开发,也决定写下这篇帖子来增加自己对于MySQL的常用函数的理解。虽然其中有一部分函数可能平时使用的几率比较小,不过也是作为一个了解吧。

一、字符串函数

1.ascii(char)返回字符的ascii码值----------97

SELECT ASCII('a') AS ASCII码值;

2.bit_length(str)返回字符串的比特长度----------96

SELECT BIT_LENGTH("莫德里奇") AS 比特长度;

3.length(str)返回字符串str中的字节长度----------12

SELECT LENGTH("莫德里奇") AS 字节长度;

4.char_length(str)返回字符串str中的字符长度----------4

SELECT CHAR_LENGTH("莫德里奇") AS 字符长度;

5.concat(s1,s2…,sn)将s1,s2…,sn连接成字符串----------abcdef

SELECT CONCAT('a','bc','def') AS 字符串拼接;

6.concat_ws(sep,s1,s2…,sn)将s1,s2…,sn连接成字符串,并用sep字符间隔----------abzzczzde

SELECT CONCAT_WS('zz','ab','c','de') AS 字符串拼接;

7.insert(str,x,y,instr) 将字符串str从第x位置开始,y个字符长的值替换为字符串instr----------awwwcde

SELECT INSERT('abcde',2,1,'www') AS 字符串插入;

8.replace(‘字符串’,‘需要替换的子串’,‘用于替换子串的字符串’)----------asbde

SELECT REPLACE('abcde','bc','sb') AS 字符串替换;

9.find_in_set(str,list)分析list列表,如果发现str,返回str在list中的位置----------4

SELECT FIND_IN_SET('a','b,c,d,a,d,e,f,s') AS 字符查找;

10.left(str,x)返回字符串str中最左边的x个字符----------ab

SELECT LEFT('abcd',2) AS 返回字符串;

11.right(str,x) 返回字符串str中最右边的x个字符----------cd

SELECT right('abcd',2) AS 返回字符串;

12.mid(str, start,length) 截取字符串,start起始位置(第一个为1),length取得字符串长度----------bc

SELECT MID('abcd',2,2) AS 字符串截取;

13.ltrim(str) 从字符串str中切掉开头的空格----------abc~~(~表示空格,方便大家看)

SELECT LTRIM('    abc  ') AS 去除开头空格;

14.rtrim(str) 返回字符串str尾部的空格----------~~abc

SELECT RTRIM('  abc  ') AS 去除尾部空格;

15.trim(str)去除字符串首部和尾部的所有空格---------abc

SELECT TRIM('  abc  ') AS 去除两端空格;

16.lcase(str)或lower(str) 返回将字符串str中所有字符改变为小写后的结果----------abcdef

SELECT LCASE('abcDEF') AS 转小写;
SELECT LOWER('abcDEF') AS 转小写;

17.ucase(str)或upper(str) 返回将字符串str中所有字符转变为大写后的结果----------ABCDEF

SELECT UCASE('abcDEF') AS 转大写;
SELECT UPPER('abcDEF') AS 转大写;

18.quote(str) 用反斜杠转义str中的单引号----------‘abc’

SELECT QUOTE('abc') AS 转义单引号;

19.repeat(str,x)返回字符串str重复x次的结果----------abcabcabc

SELECT REPEAT('abc',3) AS 重复字符串;

20.reverse(str) 返回颠倒字符串str的结果----------dcba

SELECT REVERSE('abcd') AS 反转字符串;

二、数学函数

1.abs(x) 返回x的绝对值----------

SELECT ABS(-1.5) AS 绝对值;

2.bin(x) 返回x的二进制(oct返回八进制,hex返回十六进制)----------1010

SELECT BIN(10) AS 二进制;

3.ceiling(x) 返回大于x的最小整数值----------13

SELECT CEILING(12.8) AS 最小整数;

4.floor(x) 返回小于x的最大整数值----------2

SELECT FLOOR(2.8) AS 最大整数;

5.greatest(x1,x2,…,xn) 返回集合中最大的值----------6

SELECT GREATEST(1,2,3,4,5,6) AS 最大值;

6.least(x1,x2,…,xn) 返回集合中最小的值----------1

SELECT LEAST(1,2,3,4,5,6) AS 最小值;

7.pi() 返回pi的值(圆周率)----------3.141593

SELECT PI() AS 圆周率;

8.sqrt(x) 返回一个数的平方根----------3

SELECT SQRT(9) AS 平方根;

9.truncate(x,y) 返回数字x截短为y位小数的结果----------12.34

SELECT TRUNCATE(12.345,2) AS 字符串截取;

三、聚合函数

1.avg(col) 返回指定列的平均值

SELECT AVG(score) FROM student;

2.count(col) 返回指定列中非null值的个数

SELECT COUNT(score) FROM student;

3.min(col) 返回指定列的最小值

SELECT MIN(score) FROM student;

4.max(col) 返回指定列的最大值

SELECT MAX(score) FROM student;

5.sum(col) 返回指定列的所有值之和

SELECT SUM(score) FROM student;

6.group_concat(col) 返回由属于一组的列值连接组合而成的结果

SELECT GROUP_CONCAT(score) FROM student;

四、日期和时间函数

1.curdate()或current_date() 返回当前的日期----------2020-01-01

SELECT CURDATE() AS 时间;
SELECT CURRENT_DATE() AS 时间;

2.curtime()或current_time() 返回当前的时间----------12:00:00

SELECT CURTIME() AS 时间;
SELECT CURRENT_TIME() AS 时间;

3.now() 返回当前的日期和时间----------2020-01-01 12:00:00

SELECT NOW();

4.date_add(date,interval int keyword)返回日期date加上间隔时间int的结果----------2020-11-13

SELECT date_add(current_date,interval 6 month);

5.date_format(date,fmt) 依照指定的格式格式化日期date值----------2020-01-01
----------2020-01-01 12:00:00

SELECT DATE_FORMAT(NOW(),'%Y-%m-%d');
SELECT DATE_FORMAT(NOW(),'%m-%d-%Y %T');

6.dayofweek(date) 返回date所代表的一星期中的第几天(1~7)----------5

SELECT DAYOFWEEK(NOW());

7.dayofmonth(date) 返回date是一个月的第几天(1~31)----------14

SELECT DAYOFMONTH(NOW());

8.dayofyear(date) 返回date是一年的第几天(1~366)----------135

SELECT DAYOFYEAR(NOW());

9.quarter(date) 返回date在一年中的季度(1~4)----------2

SELECT QUARTER(NOW());

10.week(date) 返回日期date为一年中第几周----------19

SELECT WEEK(NOW());

11.year(date) 返回日期date的年份----------2020

SELECT YEAR(NOW());

先总结这么多吧,还有一些加密函数以及格式化函数没写进来。最重要的流程控制函数也没写进来。过几天,我会把流程控制的补充上,毕竟对于Mybatis而言,SQL语句是基础。
努力不一定成功,最坏的结果也只是大器晚成。