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

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;
相关推荐
大数据面试宝典2 分钟前
用AI来写SQL:让ChatGPT成为你的数据库助手
数据库·人工智能·chatgpt
努力的小雨7 分钟前
快速上手 KSQL:轻松与数据库交互的利器
数据库·经验分享
Gentle58610 分钟前
labview中连接sql server数据库查询语句
数据库·labview
Gentle58611 分钟前
labview用sql server数据库存取数据到一个单元格
数据库·labview
2401_8576363913 分钟前
共享汽车管理新纪元:SpringBoot框架应用
数据库·spring boot·汽车
菲兹园长14 分钟前
表的设计(MYSQL)
数据库·mysql
Java Fans29 分钟前
MySQL数据库常用命令大全(完整版——表格形式)
数据库·mysql
起飞的风筝41 分钟前
【redis】—— 环境搭建教程
数据库·redis·缓存
白萝卜弟弟1 小时前
【MySQL】MySQL函数之JSON_EXTRACT
数据库·mysql·json
gjh12081 小时前
MySQL常见面试题
数据库·mysql