mysql中函数简介

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
云原生数据库 PolarDB 分布式版,标准版 2核8GB
RDS PostgreSQL Serverless,0.5-4RCU 50GB 3个月
推荐场景:
对影评进行热评分析
简介: MySQL 是一种广泛使用的开源关系型数据库,提供丰富的内置函数,涵盖文本、数值、日期时间及系统操作,助力高效数据处理与管理。

简介

MySQL 是一个开源的关系型数据库管理系统(RDBMS),广泛用于各种应用场景,从小型网站到大型企业系统。是我们最常用的一种关系型数据,为了方便使用,MySQL 提供了多种内置函数,用于执行各种数据操作和处理。以下是主要的功能类型及其简要说明:

  • 文本函数:用于处理和操作字符串数据。
  • 数值函数:用于对数值数据进行数学运算和处理。
  • 时间与日期函数:用于处理日期和时间数据。
  • 系统函数:提供有关数据库和服务器的信息。

MySQL中的文本处理函数

1. 字符串连接函数

  • CONCAT(string1, string2, ...)
  • 用途:将多个字符串连接成一个字符串。
  • 示例CONCAT(first_name, ' ', last_name) 将名和姓连接,中间加一个空格。
  • CONCAT_WS(separator, string1, string2, ...)
  • 用途:使用指定的分隔符将多个字符串连接起来。
  • 示例CONCAT_WS(',', 'John', 'Doe', 'New York') 结果为 John,Doe,New York

2. 字符串长度函数

  • CHAR_LENGTH(string) CHARACTER_LENGTH(string)
  • 用途:返回字符串中的字符数。
  • 注意:适用于多字节字符集(如中文)。
  • LENGTH(string)
  • 用途:返回字符串的字节长度。
  • 注意:对于多字节字符(如中文),一个字符可能占用多个字节。

3. 字符串查找函数

  • LOCATE(substring, string) POSITION(substring IN string)
  • 用途:返回子字符串在字符串中第一次出现的位置(从1开始)。如果未找到,返回0。
  • INSTR(string, substring)
  • 用途:类似于 LOCATE,但参数顺序相反,返回子字符串在字符串中第一次出现的位置。

4. 字符串截取函数

  • SUBSTRING(string, start, length) SUBSTR(string, start, length)
  • 用途:从字符串中提取子字符串。start 是起始位置,length 是要提取的长度。
  • 示例SUBSTRING('Hello World', 7, 5) 结果为 'World'
  • LEFT(string, length)
  • 用途:从字符串的左侧提取指定长度的子字符串。
  • RIGHT(string, length)
  • 用途:从字符串的右侧提取指定长度的子字符串。

5. 字符串修剪函数

  • TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] string)
  • 用途:移除字符串两端的指定字符。默认情况下,移除空格。
  • 示例TRIM(' Hello World ') 结果为 'Hello World'
  • LTRIM(string)
  • 用途:移除字符串左侧的空格。
  • RTRIM(string)
  • 用途:移除字符串右侧的空格。

6. 大小写转换函数

  • UPPER(string) UCASE(string)
  • 用途:将字符串中的所有字符转换为大写。
  • LOWER(string) LCASE(string)
  • 用途:将字符串中的所有字符转换为小写。

7. 字符串替换函数

  • REPLACE(string, from_str, to_str)
  • 用途:将字符串中所有出现的 from_str 替换为 to_str
  • INSERT(string, pos, length, new_string)
  • 用途:在字符串的指定位置插入一个新的子字符串,并替换掉指定长度的字符。

8. 字符串填充函数

  • LPAD(string, length, pad_string)
  • 用途:在字符串的左侧填充指定的字符,直到达到指定的总长度。
  • RPAD(string, length, pad_string)
  • 用途:在字符串的右侧填充指定的字符,直到达到指定的总长度。

9. 字符串比较函数

  • STRCMP(string1, string2)
  • 用途:比较两个字符串。如果 string1 小于 string2,返回 -1;如果相等,返回 0;如果 string1 大于 string2,返回 1。

10. 其他有用的函数

  • REVERSE(string)
  • 用途:反转字符串中的字符顺序。
  • SPACE(n)
  • 用途:返回一个由 n 个空格组成的字符串。
  • REPEAT(string, count)
  • 用途:将字符串重复指定的次数。

11. 正则表达式函数

  • REGEXP_LIKE(string, pattern)
  • 用途:检查字符串是否匹配正则表达式模式。
  • REGEXP_REPLACE(string, pattern, replacement)
  • 用途:将字符串中匹配正则表达式模式的部分替换为指定的替换字符串。

12. 字符串拆分与聚合

  • SUBSTRING_INDEX(string, delimiter, count)
  • 用途:根据指定的分隔符拆分字符串,并返回第 count 个部分。
  • GROUP_CONCAT(expression SEPARATOR separator)
  • 用途:将多个行的值连接成一个字符串,之间使用指定的分隔符。

MySQL中的数值函数

1. 基本算术运算函数

  • ABS(number): 返回数值的绝对值。
  • SIGN(number): 返回数值的符号。正数返回1,负数返回-1,零返回0。
  • MOD(numerator, denominator): 返回 numerator 除以 denominator 的余数。
  • DIV(numerator, denominator): 返回 numerator 除以 denominator 的整数商。

2. 数学函数

  • CEIL(number) 或 CEILING(number): 返回大于或等于指定数的最小整数(向上取整)。
  • FLOOR(number): 返回小于或等于指定数的最大整数(向下取整)。
  • ROUND(number, decimals): 将数值四舍五入到指定的小数位数。如果省略 decimals,则四舍五入到最接近的整数。
  • TRUNCATE(number, decimals): 将数值截断到指定的小数位数,不进行四舍五入。
  • POW(x, y) 或 POWER(x, y): 返回 x y 次幂。
  • SQRT(number): 返回数值的平方根。

3. 指数和对数函数

  • EXP(number): 返回 e(自然对数的底)的 number 次幂。
  • LOG(number): 返回数值的自然对数。
  • LOG10(number): 返回数值的以10为底的对数。

4. 三角函数

  • SIN(number): 返回数值的正弦值,角度以弧度表示。
  • COS(number): 返回数值的余弦值,角度以弧度表示。
  • TAN(number): 返回数值的正切值,角度以弧度表示。
  • ASIN(number): 返回数值的反正弦值,结果以弧度表示。
  • ACOS(number): 返回数值的反余弦值,结果以弧度表示。
  • ATAN(number): 返回数值的反正切值,结果以弧度表示。

5. 其他常用函数

  • PI(): 返回圆周率 π 的值。
  • RAND(): 返回一个介于 0 和 1 之间的随机浮点数。
  • RAND(seed): 返回一个基于种子值的随机浮点数。相同的种子值会产生相同的随机数。
  • LEAST(number1, number2, ...): 返回参数列表中的最小值。
  • GREATEST(number1, number2, ...): 返回参数列表中的最大值。

6. 进制转换函数

  • BIN(number): 返回数值的二进制表示。
  • HEX(number): 返回数值的十六进制表示。
  • OCT(number): 返回数值的八进制表示。

7. 数值聚合函数

  • COUNT(expression): 返回满足条件的行数。
  • SUM(expression): 返回指定列值的总和。
  • AVG(expression): 返回指定列值的平均值。
  • MIN(expression): 返回指定列的最小值。
  • MAX(expression): 返回指定列的最大值。

8. 随机数生成函数

  • RAND(): 生成一个随机浮点数,范围在 0 到 1 之间。
  • RAND(seed): 生成一个基于种子值的随机浮点数。

9. 其他函数

  • CRC32(expression): 计算循环冗余校验值。
  • DEGREES(number): 将弧度转换为度数。
  • RADIANS(number): 将度数转换为弧度。

MySQL中的日期与时间函数

1. 获取当前日期和时间

  • CURDATE() 或 CURRENT_DATE(): 返回当前日期(格式为 YYYY-MM-DD)。
  • CURTIME() 或 CURRENT_TIME(): 返回当前时间(格式为 HH:MM:SS)。
  • NOW() 或 SYSDATE(): 返回当前的日期和时间(格式为 YYYY-MM-DD HH:MM:SS)。
  • CURRENT_TIMESTAMP(): 返回当前的日期和时间(格式为 YYYY-MM-DD HH:MM:SS)。

2. 日期和时间提取函数

  • YEAR(date): 从日期中提取年份。
  • MONTH(date): 从日期中提取月份。
  • DAY(date): 从日期中提取天数。
  • HOUR(time): 从时间中提取小时数。
  • MINUTE(time): 从时间中提取分钟数。
  • SECOND(time): 从时间中提取秒数。
  • MONTHNAME(date): 返回月份的英文名称(例如,January)。
  • DAYNAME(date): 返回星期的英文名称(例如,Monday)。
  • DAYOFWEEK(date): 返回日期对应的星期几(1 = Sunday, 2 = Monday, ..., 7 = Saturday)。
  • DAYOFYEAR(date): 返回日期是一年中的第几天(范围1-366)。
  • QUARTER(date): 返回日期所在的季度(1-4)。

3. 日期和时间计算函数

  • DATE_ADD(date, INTERVAL expr unit): 对日期或日期时间进行加法运算。例如,DATE_ADD('2023-01-01', INTERVAL 1 MONTH) 返回 2023-02-01
  • DATE_SUB(date, INTERVAL expr unit): 对日期或日期时间进行减法运算。例如,DATE_SUB('2023-01-01', INTERVAL 1 DAY) 返回 2022-12-31
  • DATEDIFF(date1, date2): 返回两个日期之间的天数差。
  • TIMEDIFF(time1, time2): 返回两个时间之间的差值(格式为 HH:MM:SS)。
  • TIMESTAMPDIFF(unit, datetime1, datetime2): 返回两个日期时间之间的差值,差值的单位由 unit 指定(例如,SECOND, MINUTE, HOUR, DAY, MONTH, YEAR)。

4. 格式化日期和时间

  • DATE_FORMAT(date, format): 根据指定的格式字符串格式化日期。例如,DATE_FORMAT('2023-01-01', '%W, %M %D, %Y') 返回 Sunday, January 1st, 2023
  • TIME_FORMAT(time, format): 根据指定的格式字符串格式化时间。例如,TIME_FORMAT('12:34:56', '%H:%i:%s') 返回 12:34:56

5. 日期和时间转换函数

  • STR_TO_DATE(str, format): 将字符串转换为日期时间值,格式由 format 指定。例如,STR_TO_DATE('01,5,2013', '%d,%m,%Y') 返回 2013-05-01
  • UNIX_TIMESTAMP(date): 将日期时间转换为 Unix 时间戳(自1970年1月1日以来的秒数)。
  • FROM_UNIXTIME(unix_timestamp): 将 Unix 时间戳转换为日期时间值。

6. 其他日期和时间函数

  • LAST_DAY(date): 返回日期所在月份的最后一天。例如,LAST_DAY('2023-02-15') 返回 2023-02-28
  • MAKEDATE(year, day_of_year): 根据年份和一年中的第几天生成日期。例如,MAKEDATE(2023, 1) 返回 2023-01-01
  • MAKETIME(hour, minute, second): 根据小时、分钟和秒生成时间。例如,MAKETIME(12, 34, 56) 返回 12:34:56
  • PERIOD_ADD(period, months): 对年月周期进行加法运算。例如,PERIOD_ADD(202301, 3) 返回 202304
  • PERIOD_DIFF(period1, period2): 返回两个年月周期之间的月份差。例如,PERIOD_DIFF(202304, 202301) 返回 3

7. 日期和时间条件函数

  • DATE(date): 提取日期时间值中的日期部分。
  • TIME(datetime): 提取日期时间值中的时间部分。
  • UTC_DATE(): 返回当前的 UTC 日期。
  • UTC_TIME(): 返回当前的 UTC 时间。
  • UTC_TIMESTAMP(): 返回当前的 UTC 日期和时间。

MySQL中的系统函数

1. 获取数据库和服务器信息

  • VERSION(): 返回 MySQL 服务器的版本号。
  • CONNECTION_ID(): 返回当前连接的连接 ID(线程 ID)。
  • DATABASE() 或 SCHEMA(): 返回当前数据库的名称。
  • USER() 或 CURRENT_USER(): 返回当前 MySQL 用户名和主机名。
  • SYSTEM_USER(): 返回当前 MySQL 系统用户名。
  • SESSION_USER(): 返回当前会话的 MySQL 用户名。

2. 加密和压缩函数

  • MD5(str): 计算字符串 str 的 MD5 校验和,返回 32 位十六进制数字字符串。
  • SHA1(str): 计算字符串 str 的 SHA-1 校验和,返回 40 位十六进制数字字符串。
  • SHA2(str, hash_length): 计算字符串 str 的 SHA-2 系列哈希值,hash_length 可以是 224、256、384 或 512。
  • COMPRESS(string_to_compress): 压缩字符串并返回二进制结果。
  • UNCOMPRESS(compressed_string): 解压缩由 COMPRESS() 函数生成的压缩字符串。
  • ENCODE(str, pass_str): 使用密码字符串 pass_str 加密字符串 str,返回二进制字符串。
  • DECODE(crypt_str, pass_str): 使用密码字符串 pass_str 解密加密字符串 crypt_str,返回原始字符串。

3. 信息函数

  • LAST_INSERT_ID(): 返回最近一次插入操作中自动生成的 AUTO_INCREMENT 值。
  • ROW_COUNT(): 返回受上一条 SQL 语句影响的行数。
  • FOUND_ROWS(): 返回上一条 SELECT 语句在没有 LIMIT 子句的情况下返回的行数。
  • BENCHMARK(count, expr): 重复执行表达式 expr count 次,返回 0,用于测试表达式执行时间。
  • CHARSET(str): 返回字符串 str 的字符集。
  • COLLATION(str): 返回字符串 str 的排序规则。

4. 流程控制函数

  • IF(expr, v1, v2): 如果表达式 expr 为真,返回 v1,否则返回 v2
  • IFNULL(v1, v2): 如果 v1 不为 NULL,返回 v1,否则返回 v2
  • NULLIF(v1, v2): 如果 v1 等于 v2,返回 NULL,否则返回 v1
  • CASE value WHEN [compare_value] THEN result [WHEN [compare_value] THEN result ...] [ELSE result] END: 根据 value 的值返回不同的结果。
  • CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END: 根据条件返回不同的结果。

5. 类型转换函数

  • CAST(expr AS type): 将表达式 expr 转换为指定的数据类型 type
  • CONVERT(expr, type) 或 CONVERT(expr USING charset): 将表达式 expr 转换为指定的数据类型 type 或字符集 charset

6. 其他系统函数

  • UUID(): 返回一个通用唯一标识符(UUID)。
  • UUID_SHORT(): 返回一个较小的唯一标识符。
  • GET_LOCK(str, timeout): 获取一个名为 str 的命名锁,超时时间为 timeout 秒,返回 1 表示成功,0 表示超时,NULL 表示发生错误。
  • RELEASE_LOCK(str): 释放名为 str 的命名锁,返回 1 表示成功,0 表示锁不是由当前会话创建,NULL 表示发生错误。
  • IS_FREE_LOCK(str): 检查名为 str 的锁是否被当前会话占用,返回 1 表示是,0 表示否,NULL 表示发生错误。
相关文章
|
1天前
|
云安全 人工智能 自然语言处理
|
9天前
|
数据采集 人工智能 自然语言处理
Meta SAM3开源:让图像分割,听懂你的话
Meta发布并开源SAM 3,首个支持文本或视觉提示的统一图像视频分割模型,可精准分割“红色条纹伞”等开放词汇概念,覆盖400万独特概念,性能达人类水平75%–80%,推动视觉分割新突破。
649 56
Meta SAM3开源:让图像分割,听懂你的话
|
6天前
|
搜索推荐 编译器 Linux
一个可用于企业开发及通用跨平台的Makefile文件
一款适用于企业级开发的通用跨平台Makefile,支持C/C++混合编译、多目标输出(可执行文件、静态/动态库)、Release/Debug版本管理。配置简洁,仅需修改带`MF_CONFIGURE_`前缀的变量,支持脚本化配置与子Makefile管理,具备完善日志、错误提示和跨平台兼容性,附详细文档与示例,便于学习与集成。
319 116
|
5天前
|
人工智能 Java API
Java 正式进入 Agentic AI 时代:Spring AI Alibaba 1.1 发布背后的技术演进
Spring AI Alibaba 1.1 正式发布,提供极简方式构建企业级AI智能体。基于ReactAgent核心,支持多智能体协作、上下文工程与生产级管控,助力开发者快速打造可靠、可扩展的智能应用。
|
21天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
9天前
|
机器学习/深度学习 人工智能 自然语言处理
AgentEvolver:让智能体系统学会「自我进化」
AgentEvolver 是一个自进化智能体系统,通过自我任务生成、经验导航与反思归因三大机制,推动AI从“被动执行”迈向“主动学习”。它显著提升强化学习效率,在更少参数下实现更强性能,助力智能体持续自我迭代。开源地址:https://github.com/modelscope/AgentEvolver
440 32
|
4天前
|
弹性计算 人工智能 Cloud Native
阿里云无门槛和有门槛优惠券解析:学生券,满减券,补贴券等优惠券领取与使用介绍
为了回馈用户与助力更多用户节省上云成本,阿里云会经常推出各种优惠券相关的活动,包括无门槛优惠券和有门槛优惠券。本文将详细介绍阿里云无门槛优惠券的领取与使用方式,同时也会概述几种常见的有门槛优惠券,帮助用户更好地利用这些优惠,降低云服务的成本。
272 132