[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 等
常用函数
条件函数
- IF函数
- IF 函数用于根据条件返回两个值中的一个 语法 IF(condition, true_value, false_value) condition:条件表达式 true_value:条件为 TRUE,返回的值 false_value:条件为 FALSE,返回的值
- CASE 语句
- CASE 语句用于根据多个条件返回不同的值 语法 CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ... ELSE default_result END
- COALESCE 函数
- COALESCE 函数用于返回参数列表中的第一个非 NULL 值。如果参数列表都没有非 NULL 值,则返回 NULL 语法 COALESCE(value1, value2, ...) # 接受多个参数,value1为Null,返回value2的值,以此类推
- NULLIF 函数
- NULLIF 函数用于比较两个值,如果它们相等,则返回NULL,否则返回第一个值
语法 NULLIF(value1, value2)
- IFNULL 函数
- IFNULL 用于检查一个值是否为NULL,如果是NULL,则返回一个指定的默认值 语法 IFNULL(expression, default_value) expression:要检查的表达式 default_value:如果 expression 为 NULL,则返回的默认值
日期函数
- 获取当前日期和时间
- NOW():返回当前日期和时间
- CURDATE():返回当前日期
- CURTIME():返回当前时间
- 提取日期部分
- YEAR(date):提取日期的年份部分
- MONTH(date):提取日期的月份部分
- DAY(date):提取日期的日部分
- HOUR(time):提取时间的小时部分
- MINUTE(time):提取时间的分钟部分
- SECOND(time):提取时间的秒部分
- 日期计算
- 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):计算两个日期之间的天数差
- 格式化日期
- 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;
- 其他日期函数
- DAYOFWEEK(date):返回日期是星期几(1 = 星期天,2 = 星期一,...,7 = 星期六)
- DAYOFYEAR(date):返回日期是一年中的第几天
- WEEK(date):返回日期是一年中的第几周
- LAST_DAY(date):返回指定日期所在月份的最后一天
文本函数
- 字符串连接
- CONCAT(string1, string2, ...):将多个字符串连接成一个字符串
- 字符串长度
- LENGTH(string):返回字符串的长度(以字节为单位)
- CHAR_LENGTH(string):返回字符串的长度(以字符为单位)
- 字符串大小写转换
- UPPER(string):将字符串转换为大写
- LOWER(string):将字符串转换为小写
- 字符串截取
- SUBSTRING(string, start, length):从字符串中提取子字符串
- 字符串替换
- REPLACE(string,search,replace):在字符串中查找并替换指定的子字符串
- 去除空格
- TRIM(string):去除字符串两端的空格
- LTRIM(string):去除字符串左端的空格
- RTRIM(string):去除字符串右端的空格
- 字符串比较
- STRCMP(string1, string2):比较两个字符串,返回 0 表示相等,返回负数表示 string1 小于 string2,返回正数表示 string1 大于 string2
窗口函数
- 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:指定排序规则,必须包含至少一个列
- RANK()
- RANK() 为每一行分配一个排名,如果有并列的行,则会分配相同的排名,但后续的排名会跳过一些数字
- 适用于需要反映并列情况的场景 语法 RANK() OVER ( [PARTITION BY column1, column2, ...] ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ... )
- DENSE_RANK()
- DENSE_RANK() 为每一行分配一个排名,即使有并列的行,也不会跳过任何排名,始终保持连续
- 适用于需要保持排名连续的场景 语法 DENSE_RANK() OVER ( [PARTITION BY column1, column2, ...] ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ... )
- THE END -
最后修改:2025年8月1日
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:https://www.qian777.cn/36.html
共有 0 条评论