【数据库】数据库常用函数

TIMESTAMPDIFF

TIMESTAMPDIFF 是一个MySQL函数,用于计算两个日期或时间之间的差值。函数返回两个日期或时间之间的差值,并以指定的单位表示。

语法:

sql 复制代码
TIMESTAMPDIFF(unit, start_date, end_date)

其中:

  • unit是计算的单位。可以是以下值:YEAR(年)、QUARTER(季度)、MONTH(月)、DAY(天)、HOUR(小时)、MINUTE(分钟)、SECOND(秒)。

  • start_date 是开始日期或时间。

  • end_date 是结束日期或时间。

示例:

  • 计算了两个日期之间的天数差。
sql 复制代码
SELECT TIMESTAMPDIFF(DAY, '2022-01-01', '2022-02-01') AS day_diff;

CONCAT

CONCAT函数是MySQL中用来连接多个字符串的函数。它可以将两个或多个字符串拼接在一起,并返回拼接后的结果。

语法:

sql 复制代码
concat(str1, str2,...)

其中:

  • 返回结果为连接参数产生的字符串
  • 如果有任何一个参数为null,则返回值为null。

示例:

sql 复制代码
SELECT CONCAT('Hello', ' ', 'World');

输出:Hello World

round

-round函数是一个常用的四舍五入函数。它可以用于对浮点数进行取整运算。
它有两种常用的用法:

  • 一种是只传入一个参数,即要进行取整的浮点数值;

  • 另一种是传入两个参数,第一个参数是要进行取整的浮点数值,第二个参数是精确到小数点后几位,默认为0。

语法:

sql 复制代码
SELECT ROUND(column_name,decimals) FROM [表名];

其中:

  • column_name: 要舍入的字段,必需

  • decimals: 规定要返回的小数位数,可选

示例:

  • ROUND(X): 返回'参数X'四舍五入的一个整数
sql 复制代码
SELECT ROUND(1.58);

查询结果:2

  • ROUND(X,D): 返回'参数X'四舍五入的有 D位小数的一个数字。
  • 如果D为0,结果将没有小数点或小数部分;
  • 如果D为负数,这时是指定小数点左边的D位整数位为0,同时小数位均为0
sql 复制代码
SELECT ROUND(1123.26723,1);
SELECT ROUND(1123.26723,0);
SELECT ROUND(1123.26723,-1);

查询结果:

  • 1123.3
  • 1123
  • 1120

IF

MySQL的IF函数是一个流程控制函数,可以根据条件的真假返回不同的值。

语法:

sql 复制代码
IF(condition, value_if_true, value_if_false)

其中:

  • condition:要进行判断的条件表达式或值。
  • value_if_true:如果条件为真,将返回的值。
  • value_if_false:如果条件为假,将返回的值。

示例:

  • 这个查询将返回一个结果集,包含name、age、gender和is_adult字段。如果age大于等于18,则is_adult字段的值为'成年',否则为'未成年'。
sql 复制代码
SELECT name, age, gender, IF(age >= 18, '成年', '未成年') AS is_adult
FROM student;

CASE WHEN

CASE WHEN语句是一种条件表达式,用于在SQL查询中根据不同的条件选择不同的结果。

语法:

sql 复制代码
CASE WHEN condition1 THEN result1
     WHEN condition2 THEN result2
     ...
     ELSE resultN
END

其中:

  • condition1、condition2等是条件表达式,可以是列与值之间的比较、逻辑运算符的组合等。

  • result1、result2等是在条件满足时返回的结果,可以是常量、列名、表达式等。

  • ELSE子句是可选的,用于指定当所有条件不满足时返回的默认结果。

示例:

  • 这个查询会从名为"students"的表中选择姓名(name)和年龄(age)列,并使用CASE WHEN语句根据不同的年龄段给每个人分组。如果年龄小于18岁,则分到"未成年"组;如果年龄在18到60岁之间,则分到"成年"组;否则分到"老年"组。然后,将每个人的分组结果作为新的列"age_group"返回。
sql 复制代码
SELECT name, age,
   CASE 
      WHEN age < 18 THEN '未成年'
      WHEN age >= 18 AND age < 60 THEN '成年'
      ELSE '老年'
   END AS age_group
FROM students;
相关推荐
蓝速科技7 分钟前
会议室门牌公告通知发布选型与落地指南丨蓝速科技
大数据·运维·数据库·人工智能·科技
大海星辰7981 小时前
一次对账SQL“灵异事件”排查:NOT IN返回空集的坑
mysql
Linux-lucky1 小时前
32-38-Linux学习之旅之MySQL综合
linux·运维·学习·mysql·ubuntu
一 乐3 小时前
二手交易平台|基于springboot + vue二手交易平台(源码+数据库+文档)
java·数据库·vue.js·spring boot·小程序
SelectDB3 小时前
同等资源下 Apache Doris 4.2 vs StarRocks 4.1.1:1TB SSB 与 TPC-H 性能实测
大数据·数据库·数据分析
这个DBA有点耶3 小时前
数据库集群与分布式架构:三条技术路线对比、金仓KES RAC实测数据与决策框架
数据库·程序员·架构
MayBaymax3 小时前
MongoDB 索引与事务
java·数据库·mongodb
SelectDB3 小时前
Doris vs ClickHouse:企业 OLAP 走向下一阶段,两种技术路线如何选择
大数据·数据库·数据分析
vx-程序开发4 小时前
【计算机毕设】django校园跑腿服务系统83141
java·数据库·vue.js·spring boot·spring·elasticsearch·django
&不羁之风&4 小时前
从 MySQL 到 MongoDB:80 万系统日志(sys_log)平滑迁移完整实战(含 Windows 环境 mongoimport 安装与避坑)
mysql·mongodb