文章目录

  • 一、单行函数
    • (一)数学函数
      • 1. round(x),返回离 x 最近的整数,即对 x 进行四舍五入
      • 2. round(x,y),返回数值 x 保留到小数点后 y 位的值
      • 3. truncate(x,y),返回数值 x 保留到小数点后 y 位的值
      • 4. abs(x),返回 x 的绝对值
      • 5.sqrt(x),返回 x 的二次方根
      • 6.mod(x,y),返回 x 被 y 除后的余数
      • 7.ceil(x) 或 ceiling(x),返回不小于 x 的最小整数
      • 8.foor(x),返回不大于 x 的最大整数
      • 9. sign(x),返回参数 x 的符号,-1 表示负数,0 表示 0,1 表示正数
      • 10. pow(x,y) 或 power(x,y),返回 x 的 y 次乘方的值
      • 11. exp(x),返回 e 的 x 乘方后的值
      • 12. log(x),返回 x 的自然对数
      • 13. log10(x),返回 x 的基数为 10 的对数
      • 14. radians(x),返回 x 由角度转化为弧度的值
      • 15. degrees(x),返回 x 由弧度转化为角度的值
      • 16. sin(x),前者返回 x 的正弦,其中 x 为给定的弧度值
      • 17. asin(x),返回 x 的反正弦值,x 为正弦
      • 18. COS(x),返回 x 的余弦,其中 x 为给定的弧度值
      • 19. ACOS(x),返回 x 的反余弦值,x 为余弦
      • 20. tan(x),返回 x 的正切,其中 x 为给定的弧度值
      • 21. atan(x),返回 x 的反正切值,x 为正切
      • 22. cot(x),返回给定弧度值 x 的余切
    • (二)字符串函数
      • 1. left(s,n),返回字符串 s 左边的 n 个字符
      • 2. concat(s1,s2,...,sn),将参数拼接成一个字符串
      • 3. concat_ws(x,s1,s2,...),返回多个字符串拼接之后的字符串,每个字符串之间有一个x
      • 4. char_length(str),计算字符串字符个数
    • (三)日期和时间函数
      • 1. STR_TO_DATE(string, format_mask),将字符串转变为日期
      • 2. DATE_FORMAT(d,f),按表达式 f 的要求显示日期 d
      • 3. now(),获取当前的系统日期和时间
      • 4. dayofweek(date),返回日期 date 是星期几
      • 5. dayname(date),返回日期 date 是星期几
      • 6. time_to_sec(t),将时间 t 转换为秒
      • 7. sec_to_time(s),将秒数 s 转换成时间
      • 8. from_unixtime(unix_tiemstamp,format),把时间戳转化成日期时间
      • 9. unix_timestamp(date),日期转换成时间戳
    • (四)条件判断函数
      • 1. case 语句
      • 2. ifnull(v1,v2),空值转换函数
    • (五)其它函数
      • 1. coalesce(expr1, expr2, ...., expr_n),返回参数列表中第一个非空参数
      • 2. cast(x AS type),将 x 变成 type 类型
      • 3. inet_aton(expr),将IP地址转成32位的二进制整数
      • 4.inet_ntoa(expr),将二进制整数转成IP地址
  • 二、组函数
    • (一)数学函数
      • 1. count (expression),返回查询的记录总数
      • 2. avg(expression),返回一个表达式的平均值
      • 3. sum(expression),返回指定字段的总和
      • 4. max(expression),返回字段 expression 中的最大值
      • 5. min(expression),返回字段 expression 中的最小值

一、单行函数

单行函数是每行数据返回一行结果

(一)数学函数

1. round(x),返回离 x 最近的整数,即对 x 进行四舍五入

mysql> select round(455.476);
+----------------+
| round(455.476) |
+----------------+
|            455 |
+----------------+
1 row in set (0.00 sec)

2. round(x,y),返回数值 x 保留到小数点后 y 位的值

y 是要保留的小数位数,如果没有指定 y,则默认是 0。

返回最接近 x 的数,其值保留到小数点后面 y 位,截取时会四舍五入。

mysql> select round(455.476,2);
+------------------+
| round(455.476,2) |
+------------------+
|           455.48 |
+------------------+
1 row in set (0.00 sec)

若 y 为负值,则会将小数点左边 y 位的数舍弃为 0。截取时也会进行四舍五入。

mysql> select round(445.476,-2);
+-------------------+
| round(445.476,-2) |
+-------------------+
|               400 |
+-------------------+
1 row in set (0.00 sec)

445.476,小数点左边的 2 位舍弃变成 0,因为从小数点向左数第 2 个数 4 不足以向前进数,所以最终的结果是 400。

mysql> select round(455.476,-2);
+-------------------+
| round(455.476,-2) |
+-------------------+
|               500 |
+-------------------+
1 row in set (0.00 sec)

因为从小数点向左数第 2 个数 5 足以向前进数,所以最终的结果是 500。

3. truncate(x,y),返回数值 x 保留到小数点后 y 位的值

round(x,y) 的区别是不会进行四舍五入。如果没有第二个参数 , 默认是 0。

4. abs(x),返回 x 的绝对值

5.sqrt(x),返回 x 的二次方根

x 是一个非负数。

6.mod(x,y),返回 x 被 y 除后的余数

7.ceil(x) 或 ceiling(x),返回不小于 x 的最小整数

8.foor(x),返回不大于 x 的最大整数

9. sign(x),返回参数 x 的符号,-1 表示负数,0 表示 0,1 表示正数

10. pow(x,y) 或 power(x,y),返回 x 的 y 次乘方的值

11. exp(x),返回 e 的 x 乘方后的值

e 是自然对数的底数,是无理数,e 常用于对数,其值是 2.71828…

e = (1+1/n)n(1+1/n)^n(1+1/n)n,其中 n 趋向无穷大。随着 n 的增大,底数 (1+1/n) 就会越来越接近 1,而指数 n 趋向无穷大,那 (1+1/n)n(1+1/n)^n(1+1/n)n 最后的结果到底是趋向于 1 还是无穷大呢?其实,是趋向于 2.718281828…,这是一个无限不循环小数。

什么是对数?
如果a的x次方等于N(a>0,且a≠1),那么数x叫做以a为底N的对数(logarithm),记作x=loga N。其中,a叫做对数的底数,N叫做真数。

12. log(x),返回 x 的自然对数

y = log(x),返回 x 的自然对数,即 x 相对于基数 e 的对数,eye^yey = x。

eye^yey = x,其中 y 叫做以 e 为底,真数为 x 的对数,这个 y 也叫自然对数。

自然对数就是以无理数 e 为底的对数,记为 lnN。

13. log10(x),返回 x 的基数为 10 的对数

y = log10(x),10y10^y10y = x,其中 y 就是以 10 为底数,真数为 x 的对数。

14. radians(x),返回 x 由角度转化为弧度的值

15. degrees(x),返回 x 由弧度转化为角度的值

16. sin(x),前者返回 x 的正弦,其中 x 为给定的弧度值

17. asin(x),返回 x 的反正弦值,x 为正弦

18. COS(x),返回 x 的余弦,其中 x 为给定的弧度值

19. ACOS(x),返回 x 的反余弦值,x 为余弦

20. tan(x),返回 x 的正切,其中 x 为给定的弧度值

21. atan(x),返回 x 的反正切值,x 为正切

22. cot(x),返回给定弧度值 x 的余切

(二)字符串函数

1. left(s,n),返回字符串 s 左边的 n 个字符

返回字符串 runoob 中的前两个字符:

SELECT LEFT('runoob',2) -- ru

2. concat(s1,s2,…,sn),将参数拼接成一个字符串

字符串 s1,s2 等多个字符串合并为一个字符串。
如果有任何一个参数为 null,则返回值为 null;如果所有参数都为非二进制字符串,则返回结果为非二进制字符串;如果有任何一个参数为二进制字符串,则返回结果为二进制字符串。

另外要注意数字参数会被转换成等值的二进制数字符串,要避免此种情况,可以使用函数 cast()

合并多个字符串:

SELECT CONCAT("SQL ", "Runoob ", "Gooogle ", "Facebook") AS concatenated_string;

3. concat_ws(x,s1,s2,…),返回多个字符串拼接之后的字符串,每个字符串之间有一个x

4. char_length(str),计算字符串字符个数

(三)日期和时间函数

1. STR_TO_DATE(string, format_mask),将字符串转变为日期

相当于 Oracle 中的 to_date()

日期时间格式:
%M 解析英文的月份,例如:August
%m 解析数字的月份

举例如下:

mysql> SELECT STR_TO_DATE("August 10 2017", "%M %d %Y");
+-------------------------------------------+
| STR_TO_DATE("August 10 2017", "%M %d %Y") |
+-------------------------------------------+
| 2017-08-10                                |
+-------------------------------------------+
1 row in set (0.00 sec)mysql> INSERT INTO t_order(order_time) VALUES(str_to_date('2018-05-06','%Y-%m-%d'));
mysql> UPDATE t_project SET start_date = STR_TO_DATE("2021-09-19","%Y-%m-%d") WHERE id = 00000000010;

将日期数据保存到 Date 类型的字段中:

mysql> INSERT INTO t_order(order_time) VALUES(str_to_date('2018-05-06','%Y-%m-%d'));
mysql> UPDATE t_project SET start_date = STR_TO_DATE("2021-09-19","%Y-%m-%d") WHERE id = 00000000010;
mysql> UPDATE t_project SET start_date = STR_TO_DATE("09-23-2019","%m-%d-%Y") WHERE id = 00000000010;
mysql> UPDATE t_project SET start_date = STR_TO_DATE("09.23.2019","%m.%d.%Y") WHERE id = 00000000010;

注意:
STR_TO_DATE(字符串日期,解析格式)中的字符串日期要和解析格式一一对应。

2. DATE_FORMAT(d,f),按表达式 f 的要求显示日期 d

这就是日期转换成字符串的函数,相当于 Oracle 的 to_char()

mysql> SELECT DATE_FORMAT(sysdate(),'%m-%d-%Y %r');
+--------------------------------------+
| DATE_FORMAT(sysdate(),'%m-%d-%Y %r') |
+--------------------------------------+
| 06-04-2021 09:01:21 AM               |
+--------------------------------------+
1 row in set (0.00 sec)
mysql> select company_name,date_format(insert_time,'%Y,%m,%d') as insert_date from tf_company where company_name like '%建发%';
+-----------------------------------------+-------------+
| company_name                            | insert_date |
+-----------------------------------------+-------------+
| 建发房地产集团上海有限公司                   | 2021,02,21  |
| 建发(上海)有限公司                        | 2021,02,21  |
| 建发房地产集团南京有限公司                   | 2021,02,26  |
+-----------------------------------------+-------------+
3 rows in set (0.03 sec)
mysql> SELECT DATE_FORMAT('2011-11-11 11:11:11','%m-%d-%Y %r');
+--------------------------------------------------+
| DATE_FORMAT('2011-11-11 11:11:11','%m-%d-%Y %r') |
+--------------------------------------------------+
| 11-11-2011 11:11:11 AM                           |
+--------------------------------------------------+
1 row in set (0.00 sec)

说明:

  1. 日期时间好像只能按年-月-日-时-分-秒的格式书写,你如果写成月-日-年,则无效
  2. %Y-%m-%d %r 显示格式则可以调整位置顺序

如下示例:

mysql> SELECT DATE_FORMAT('11-11-2011 11:11:11','%Y-%m-%d %r');
+--------------------------------------------------+
| DATE_FORMAT('11-11-2011 11:11:11','%Y-%m-%d %r') |
+--------------------------------------------------+
| NULL                                             |
+--------------------------------------------------+
1 row in set, 1 warning (0.00 sec)

也可以将日期转换成字符串格式存到 Date 类型的字段中:

mysql> UPDATE t_project SET start_date = DATE_FORMAT('2021-08-21','%Y-%m-%d') WHERE id = 00000000010;

注意:
1.Date 类型的字段只能按“年月日”格式保存
2.DATE_FORMAT(日期,显示格式),日期和显示格式要一一对应,且只能按“年月日”的顺序写
3.保存时不论分隔符是什么,查询日期数据的显示格式都是“年-月-日”

mysql> select * from t_project;
+-------------+--------+----------+------------+------------+
| id          | no     | name     | start_date | end_date   |
+-------------+--------+----------+------------+------------+
| 00000000001 | pm0001 | pm000001 | 2008-01-02 | 2008-01-15 |

3. now(),获取当前的系统日期和时间

了解详情,猛戳《MySQL 获取系统日期/系统时间的函数》

4. dayofweek(date),返回日期 date 是星期几

mysql> select dayofweek('2016-01-16');
+-------------------------+
| dayofweek('2016-01-16') |
+-------------------------+
|                       7 |
+-------------------------+
1 row in set (0.03 sec)

注意:星期天=1,星期一=2, … 星期六=7

5. dayname(date),返回日期 date 是星期几

显示英文名称。

mysql> select dayname('2016-01-16');
+-----------------------+
| dayname('2016-01-16') |
+-----------------------+
| Saturday              |
+-----------------------+
1 row in set (0.07 sec)

6. time_to_sec(t),将时间 t 转换为秒

把时间转化成秒数。

7. sec_to_time(s),将秒数 s 转换成时间

把秒数转化成时间(时分秒格式)。

8. from_unixtime(unix_tiemstamp,format),把时间戳转化成日期时间

把 unix 时间戳转换为可读的时间

mysql> select from_unixtime(23434343,'%Y %m %d %H %I %S');
+---------------------------------------------+
| from_unixtime(23434343,'%Y %m %d %H %I %S') |
+---------------------------------------------+
| 1970 09 29 13 01 23                         |
+---------------------------------------------+
1 row in set (0.00 sec)mysql> select from_unixtime('23434343','%Y %m %d %H %I %S');
+-----------------------------------------------+
| from_unixtime('23434343','%Y %m %d %H %I %S') |
+-----------------------------------------------+
| 1970 09 29 13 01 23                           |
+-----------------------------------------------+
1 row in set (0.00 sec)

9. unix_timestamp(date),日期转换成时间戳

把可读的时间转换为 unix 时间戳。

mysql> select unix_timestamp('2009-08-06 10:10:40');
+---------------------------------------+
| unix_timestamp('2009-08-06 10:10:40') |
+---------------------------------------+
|                            1249524640 |
+---------------------------------------+
1 row in set (0.00 sec)

(四)条件判断函数

1. case 语句

case 语句是数据库中的分支语句 , 相当于 Java 中的 switch-case 语句。

CASE expressionWHEN condition1 THEN result1WHEN condition2 THEN result2...WHEN conditionN THEN resultNELSE result
END

举例:

select ename , salary , job ,
case job when 'Analyst' then salary * 1.1 --注意这里没有“ , ”
when 'Programmer' then salary * 1.05
when 'clerk' then else salary -- else 相当于 Java 中 case 语句的 default
end new_salary -- end 是 case 语句的结束标识,new_salary 是从 case 开始到 end 结束这部分 的别名
salary * 1.02
from emp_xxx ;

2. ifnull(v1,v2),空值转换函数

如果 v1 的值不为 NULL,则返回 v1,否则返回 v2

(五)其它函数

1. coalesce(expr1, expr2, …, expr_n),返回参数列表中第一个非空参数

参数列表中最后一个值通常为常量。

举例如下:

select ename, bonus, salary, coalesce( bonus , salary*0.5 , 100 ) bonus_year from emp_htlwk; # bonus不为空则返回bonus的值,若为空,则判断salary*0.5是否为空,不为空则返回salary*0.5的值,若为空则返回常数100

需求描述:有分红的以分红金额作为年终奖,有工资没有分红的以月薪的50%作为年终奖,没有分红又没有月薪的休假人员施舍100元作为年终奖。

2. cast(x AS type),将 x 变成 type 类型

将数值转换成字符类型:

mysql> select cast(120 as char);
+-------------------+
| cast(120 as char) |
+-------------------+
| 120               |
+-------------------+
1 row in set (0.03 sec)将字符串转换成日期类型:mysql> select cast('2022-02-2' as date);
+---------------------------+
| cast('2022-02-2' as date) |
+---------------------------+
| 2022-02-02                |
+---------------------------+
1 row in set (0.03 sec)

3. inet_aton(expr),将IP地址转成32位的二进制整数

mysql> select inet_aton('192.168.0.0');
+--------------------------+
| inet_aton('192.168.0.0') |
+--------------------------+
|               3232235520 |
+--------------------------+
1 row in set (0.00 sec)

4.inet_ntoa(expr),将二进制整数转成IP地址

mysql> select inet_ntoa('323223');
+---------------------+
| inet_ntoa('323223') |
+---------------------+
| 0.4.238.151         |
+---------------------+
1 row in set (0.00 sec)mysql> select inet_ntoa(323223); -- 可以去掉引号
+-------------------+
| inet_ntoa(323223) |
+-------------------+
| 0.4.238.151       |
+-------------------+
1 row in set (0.00 sec)

二、组函数

与单行函数不同 , 单行函数是每行数据返回一行结果 , 组函数是多行数据返回一行结果。

(一)数学函数

1. count (expression),返回查询的记录总数

expression 参数是一个字段或者 * 号。常用于查询表的记录总数。

2. avg(expression),返回一个表达式的平均值

expression 是一个字段。

返回 products 表中 price 字段的平均值:

SELECT AVG(price) AS average_price FROM products;

3. sum(expression),返回指定字段的总和

expression 是一个字段。

计算 order_details 表中字段 quantity 的总和:

SELECT SUM(quantity) FROM order_details;

4. max(expression),返回字段 expression 中的最大值

对所有数据类型都可以操作。如果参数写列名 , 默认忽略空值。

5. min(expression),返回字段 expression 中的最小值

对所有数据类型都可以操作。如果参数写列名 , 默认忽略空值。

MySQL函数/数据库函数相关推荐

  1. MySQL之数据库函数及存储过程

    目录 一.正则表达式 二.运算符 1.算术运算符 2.比较运算符 3.逻辑运算符(布尔值) 4.位运算符 三.数据库函数 1.数学函数 2.聚合函数 3.字符串函数 4.日期时间函数 五.存储过程 1 ...

  2. mysql 查看数据库函数_MySQL数据库中常用查询函数简介

    MYSQL中的常用函数 count(*)--- 相当于统计表的行数,在统计结果的时候,不会忽略列值为NULL的记录. select count(*) from yinxiong; Count(列名) ...

  3. mysql 查看数据库函数_MySQL数据查询和函数

    查看数据库表信息 show databases;//数据库列表 use databasename;//使用此数据库 show tables;//列表 show columns from tablena ...

  4. 【MySQL】数据库函数通关教程上篇(聚合、数学、字符串、日期、控制流函数)

  5. thinkphp mysql函数_php封装的数据库函数与用法示例【参考thinkPHP】

    本文实例讲述了php封装的数据库函数与用法.分享给大家供大家参考,具体如下: 从Thinkphp里面抽离出来的数据库模块,感觉挺好用 common.php: /** * 通用函数 */ //包含配置文 ...

  6. php访问mysql函数吗,PHP访问MySQL数据库函数简介

    PHP访问MySQL数据库函数简介 PHP访问MySQL数据库函数简介 1. 进行数据库连接 连接数据库服务器,就是客户端向己运行的数据库服务器发出连接请求, 成功以后就可以对数据库进行相应操作,由于 ...

  7. MySQL数据库中arg函数_数据库函数有哪些

    数据库函数有:1.数学函数[abs(x).bin(x)]:2.聚合函数[avg(col)]:3.字符串函数[ascii(char)]:4.日期和时间函数[curdate()]:5.加密函数[decod ...

  8. Mysql数据库函数(数字,字符串,日期时间)

    文章目录 Mysql数据库函数(数字,字符串,日期时间) 数学函数 字符串函数 日期函数 Mysql数据库函数(数字,字符串,日期时间) 数学函数 abs(x) :返回x的绝对值 rand() :返回 ...

  9. 测试操作数据库mysql数据库吗_软件测试-MySQL(六:数据库函数)

    一.MySQL函数 1.数学函数 PI()  #返回pi的值(圆周率)默认显示小数位数是6位 FLOOR(x) 返回小于x的最大整数(去掉小数取整) CEILING(x)进一取整 ROUND(x,y) ...

最新文章

  1. 一张图搞定Android学习路线
  2. 利用Switch实现两台计算机通信
  3. ubuntu下Qt Creator使用valgrind检测内存泄漏
  4. python3.6 在 windows10 下使用pycrypto
  5. openStack镜像制作
  6. ECharts Tooltip
  7. 修改WordPress主题导致整个站点404无法访问
  8. 爬虫的一些工具(二)
  9. Cisco路由器密码恢复
  10. ThoughtWorks技术雷达专区
  11. Ansible无敌详细入门教程
  12. EasyUI 扩展自定义EasyUI校验规则 验证规则
  13. c语言数组插入一个数字 移位,如何将一个数组的元素循环左移?
  14. win10改成ahci后无法开机怎么办,win10开不了机
  15. TM中拒收自定义表情的设置方法(转)
  16. html中a做成按钮,css如何将超链接a设计成按钮样式
  17. 如何备份android10,安卓手机系统怎么备份
  18. SAP创建供应商及采购订单
  19. pwm一个时间单位_详解PWM原理、频率与占空比
  20. 微博和微信的区别之处在哪里?

热门文章

  1. dynamodb容器使用_使用DynamoDB映射器将DynamoDB项目映射到对象
  2. chameleon 算法_为了简单起见,Arquillian Chameleon
  3. aws sqs_在Spring中将AWS SQS用作JMS提供程序
  4. saml2_向SAML响应中添加自定义声明–(如何为WSO2 Identity Server编写自定义声明处理程序)...
  5. JDK 11:新的默认收集方法toArray(IntFunction)
  6. eclipse创建pojo_使用Eclipse Hibernate插件逐步为POJO域Java类和hbm自动生成代码
  7. java 反射操作字段_x86上的Java最终字段没有操作?
  8. servlet面试常问问题_50个Servlet面试问答
  9. Spring Security和自定义密码编码
  10. Jirasearch 2.0狗粮:使用Lucene查找我们的Jira问题