SQL函数

七言 2025-8-1 98 8/1

[TOC]

函数

函数在 from 之前使用

计算函数

聚合函数

  • 聚合函数用于对一组数据进行计算,返回一个单一的结果
  • 常用函数: SUM(column):计算数值列的总和 AVG(column):计算数值列的平均值 COUNT(column):计算列中非NULL值的数量 MAX(column):返回列中的最大值 * MIN(column):返回列中的最小值

    取整函数

  • 取整函数用于对数值进行取整操作
  • 常用函数: CEIL(number)或CEILING(number):返回大于或等于给定数值的最小整数 FLOOR(number):返回小于或等于给定数值的最大整数 ROUND(number, decimals):将数值四舍五入到指定的小数位数 CAST(expression AS data_type):CAST 函数用于将一个值显式地转换为指定的数据类型 expression:要转换的值或表达式 data_type:目标数据类型,例如 SIGNED、DECIMAL、VARCHAR 等

    常用函数

    条件函数

    1. IF函数
  • IF 函数用于根据条件返回两个值中的一个 语法 IF(condition, true_value, false_value) condition:条件表达式 true_value:条件为 TRUE,返回的值 false_value:条件为 FALSE,返回的值
    1. CASE 语句
  • CASE 语句用于根据多个条件返回不同的值 语法 CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ... ELSE default_result END
    1. COALESCE 函数
  • COALESCE 函数用于返回参数列表中的第一个非 NULL 值。如果参数列表都没有非 NULL 值,则返回 NULL 语法 COALESCE(value1, value2, ...) # 接受多个参数,value1为Null,返回value2的值,以此类推
    1. NULLIF 函数
  • NULLIF 函数用于比较两个值,如果它们相等,则返回NULL,否则返回第一个值
    语法 NULLIF(value1, value2)
    1. IFNULL 函数
  • IFNULL 用于检查一个值是否为NULL,如果是NULL,则返回一个指定的默认值 语法 IFNULL(expression, default_value) expression:要检查的表达式 default_value:如果 expression 为 NULL,则返回的默认值

    日期函数

    1. 获取当前日期和时间
  • NOW():返回当前日期和时间
  • CURDATE():返回当前日期
  • CURTIME():返回当前时间
    1. 提取日期部分
  • YEAR(date):提取日期的年份部分
  • MONTH(date):提取日期的月份部分
  • DAY(date):提取日期的日部分
  • HOUR(time):提取时间的小时部分
  • MINUTE(time):提取时间的分钟部分
  • SECOND(time):提取时间的秒部分
    1. 日期计算
  • DATE_ADD(date, INTERVAL expr type):在日期上加上一个时间间隔
    查询每个员工入职后的第 100 天:
    SELECT 
        employee_id, 
        first_name, 
        last_name, 
        hire_date, 
        DATE_ADD(hire_date, INTERVAL 100 DAY) AS hundred_days_later
    FROM 
        employees;

  • DATE_SUB(date, INTERVAL expr type):从日期中减去一个时间间隔
  • DATEDIFF(date1, date2):计算两个日期之间的天数差
    1. 格式化日期
  • DATE_FORMAT(date, format):将日期格式化为指定的格式
    查询每个员工的入职日期,并按 YYYY-MM 格式返回:
    SELECT 
        employee_id, 
        first_name, 
        last_name, 
        DATE_FORMAT(hire_date, '%Y-%m') AS formatted_hire_date
    FROM 
        employees;

    1. 其他日期函数
  • DAYOFWEEK(date):返回日期是星期几(1 = 星期天,2 = 星期一,...,7 = 星期六)
  • DAYOFYEAR(date):返回日期是一年中的第几天
  • WEEK(date):返回日期是一年中的第几周
  • LAST_DAY(date):返回指定日期所在月份的最后一天

    文本函数

    1. 字符串连接
  • CONCAT(string1, string2, ...):将多个字符串连接成一个字符串
    1. 字符串长度
  • LENGTH(string):返回字符串的长度(以字节为单位)
  • CHAR_LENGTH(string):返回字符串的长度(以字符为单位)
    1. 字符串大小写转换
  • UPPER(string):将字符串转换为大写
  • LOWER(string):将字符串转换为小写
    1. 字符串截取
  • SUBSTRING(string, start, length):从字符串中提取子字符串
    1. 字符串替换
  • REPLACE(string,search,replace):在字符串中查找并替换指定的子字符串
    1. 去除空格
  • TRIM(string):去除字符串两端的空格
  • LTRIM(string):去除字符串左端的空格
  • RTRIM(string):去除字符串右端的空格
    1. 字符串比较
  • STRCMP(string1, string2):比较两个字符串,返回 0 表示相等,返回负数表示 string1 小于 string2,返回正数表示 string1 大于 string2

    窗口函数

    1. ROW_NUMBER()
  • ROW_NUMBER() 为每一行分配一个唯一的序号,序号从 1 开始,按指定的排序规则递增。即使有并列的行,ROW_NUMBER() 也会为每一行分配一个唯一的序号
  • 适用于需要唯一标识每一行的场景 语法 ROW_NUMBER() OVER ( [PARTITION BY column1, column2, ...] ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ... ) PARTITION BY:可选,用于将数据分组,窗口函数在每个分组内独立计算 ORDER BY:指定排序规则,必须包含至少一个列
    1. RANK()
  • RANK() 为每一行分配一个排名,如果有并列的行,则会分配相同的排名,但后续的排名会跳过一些数字
  • 适用于需要反映并列情况的场景 语法 RANK() OVER ( [PARTITION BY column1, column2, ...] ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ... )
    1. DENSE_RANK()
  • DENSE_RANK() 为每一行分配一个排名,即使有并列的行,也不会跳过任何排名,始终保持连续
  • 适用于需要保持排名连续的场景 语法 DENSE_RANK() OVER ( [PARTITION BY column1, column2, ...] ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ... )
- THE END -

七言

8月01日15:52

最后修改:2025年8月1日
0

非特殊说明,本博所有文章均为博主原创。

共有 0 条评论