MySQL常用函数详解之数值函数

MySQL常用函数详解之数值函数

    • 一、数值函数概述
      • 1.1 数值函数的作用
      • 1.2 数值函数分类
    • 二、算术运算函数
      • 2.1 加法运算(+)
      • 2.2 减法运算(-)
      • 2.3 乘法运算(*)
      • 2.4 除法运算(/ 或 DIV)
      • 2.5 取模运算(% 或 MOD)
    • 三、数值处理函数
      • 3.1 绝对值函数(ABS)
      • 3.2 取整函数
      • 3.3 符号函数(SIGN)
    • 四、三角函数与反三角函数
      • 4.1 三角函数
      • 4.2 反三角函数
    • 五、对数与幂函数
      • 5.1 幂函数(POW 或 POWER 或 EXP)
      • 5.2 对数函数
    • 六、进制转换函数
      • 6.1 十进制转二进制(BIN)
      • 6.2 十进制转八进制(OCT)
      • 6.3 十进制转十六进制(HEX)
      • 6.4 十六进制转十进制(CONV)
    • 七、随机数函数
      • 7.1 生成随机小数(RAND)
      • 7.2 生成指定范围内的随机整数(FLOOR(RAND() * (max - min + 1)) + min)
    • 八、实战案例
      • 8.1 销售数据分析
      • 8.2 抽奖活动数据生成
      • 8.3 科学计算场景

MySQL提供了丰富的数值函数,帮助我们高效地进行数值计算、类型转换、随机数生成等操作,无论是简单的加减乘除,还是复杂的数学运算,这些函数都能大显身手。本文我将深入剖析MySQL常用数值函数的功能、语法及应用场景,并结合实战案例,带你全面掌握数值函数的使用技巧。

一、数值函数概述

1.1 数值函数的作用

数值函数是MySQL中专门用于处理数值型数据的工具,其主要作用包括:

  • 基本数学运算:执行加、减、乘、除等基础算术运算。
  • 高级数学计算:实现三角函数、对数、幂运算等复杂数学操作。
  • 数值处理与转换:完成数值的取整、四舍五入、绝对值计算等处理,以及数据类型转换。
  • 随机数生成:生成随机数值,满足测试数据生成、抽奖等业务需求。

1.2 数值函数分类

根据功能特性,MySQL数值函数可分为以下几类:

  • 算术运算函数
  • 数值处理函数
  • 三角函数与反三角函数
  • 对数与幂函数
  • 进制转换函数
  • 随机数函数

二、算术运算函数

2.1 加法运算(+)

在MySQL中,使用+运算符进行加法运算,支持两个或多个数值相加。
示例:计算orders表中quantity(数量)与unit_price(单价)的乘积,并加上shipping_fee(运费),得到订单总金额。

SELECT quantity, unit_price, shipping_fee, quantity * unit_price + shipping_fee AS total_amount
FROM orders;

2.2 减法运算(-)

-运算符用于执行减法运算,返回两个数值的差值。
示例:查询employees表中员工的salary(工资)减去tax(税款)后的实际收入。

SELECT salary, tax, salary - tax AS actual_income
FROM employees;

2.3 乘法运算(*)

*运算符用于实现乘法操作,将两个或多个数值相乘。
示例:计算products表中商品库存数量stock_quantity与每件商品的体积product_volume的总体积。

SELECT stock_quantity, product_volume, stock_quantity * product_volume AS total_volume
FROM products;

2.4 除法运算(/ 或 DIV)

/运算符执行常规除法,返回带有小数部分的结果;DIV运算符执行整数除法,返回商的整数部分。
示例

-- 使用 / 进行常规除法
SELECT 10 / 3 AS normal_division_result; 
-- 使用 DIV 进行整数除法
SELECT 10 DIV 3 AS integer_division_result; 

2.5 取模运算(% 或 MOD)

%MOD用于计算两个数相除的余数。
示例:在students表中,根据学生的student_id判断其是否为偶数(余数为0则为偶数)。

SELECT student_id, student_id % 2 = 0 AS is_even
FROM students;

三、数值处理函数

3.1 绝对值函数(ABS)

ABS函数用于返回数值的绝对值。
示例:计算sales表中profit(利润)字段的绝对值(若利润为负,表示亏损)。

SELECT profit, ABS(profit) AS absolute_profit
FROM sales;

3.2 取整函数

  • 向上取整(CEIL 或 CEILING)CEIL函数将数值向上取整到最接近的整数。
    示例
    SELECT CEIL(3.14) AS ceiling_result; 
    
  • 向下取整(FLOOR)FLOOR函数将数值向下取整到最接近的整数。
    示例
    SELECT FLOOR(3.99) AS floor_result; 
    
  • 四舍五入(ROUND)ROUND函数根据指定的小数位数对数值进行四舍五入。
    示例:将orders表中的total_amount(订单总金额)四舍五入到小数点后两位。
    SELECT total_amount, ROUND(total_amount, 2) AS rounded_amount
    FROM orders;
    
  • 截断取整(TRUNCATE)TRUNCATE函数直接截断数值的小数部分,不进行四舍五入。
    示例
    SELECT TRUNCATE(3.14159, 2) AS truncated_result; 
    

3.3 符号函数(SIGN)

SIGN函数返回数值的符号,若数值为正返回1,为负返回-1,为0返回0。
示例:在transactions表中,判断transaction_amount(交易金额)的正负方向。

SELECT transaction_amount, SIGN(transaction_amount) AS amount_sign
FROM transactions;

四、三角函数与反三角函数

4.1 三角函数

  • 正弦函数(SIN)SIN函数返回角度的正弦值,角度以弧度为单位。
    示例
    SELECT SIN(RADIANS(30)) AS sine_value; -- 将30度转换为弧度后计算正弦值
    
  • 余弦函数(COS)COS函数返回角度的余弦值。
    示例
    SELECT COS(RADIANS(60)) AS cosine_value; 
    
  • 正切函数(TAN)TAN函数返回角度的正切值。
    示例
    SELECT TAN(RADIANS(45)) AS tangent_value; 
    

4.2 反三角函数

  • 反正弦函数(ASIN)ASIN函数返回正弦值对应的角度(以弧度为单位)。
    示例
    SELECT ASIN(0.5) AS arcsine_value; 
    
  • 反余弦函数(ACOS)ACOS函数返回余弦值对应的角度。
    示例
    SELECT ACOS(0.5) AS arccosine_value; 
    
  • 反正切函数(ATAN)ATAN函数返回正切值对应的角度。
    示例
    SELECT ATAN(1) AS arctangent_value; 
    

五、对数与幂函数

5.1 幂函数(POW 或 POWER 或 EXP)

  • POWPOWER函数用于计算一个数的幂次方,POW(x, y)POWER(x, y)表示xy次方。
    示例
    SELECT POW(2, 3) AS power_result; 
    
  • EXP函数计算自然常数e的幂次方,即EXP(x)表示ex次方。
    示例
    SELECT EXP(1) AS exponential_result; 
    

5.2 对数函数

  • 自然对数(LOG)LOG函数返回数值的自然对数(以e为底)。
    示例
    SELECT LOG(10) AS natural_log_result; 
    
  • 以10为底的对数(LOG10)LOG10函数返回数值以10为底的对数。
    示例
    SELECT LOG10(100) AS log10_result; 
    

六、进制转换函数

6.1 十进制转二进制(BIN)

BIN函数将十进制数转换为二进制字符串。
示例

SELECT BIN(10) AS binary_result; 

6.2 十进制转八进制(OCT)

OCT函数将十进制数转换为八进制字符串。
示例

SELECT OCT(10) AS octal_result; 

6.3 十进制转十六进制(HEX)

HEX函数将十进制数转换为十六进制字符串。
示例

SELECT HEX(10) AS hexadecimal_result; 

6.4 十六进制转十进制(CONV)

CONV函数可以将一个数从指定进制转换为另一个进制,CONV(N, from_base, to_base)表示将Nfrom_base进制转换为to_base进制。
示例:将十六进制数10转换为十进制。

SELECT CONV('10', 16, 10) AS converted_result; 

七、随机数函数

7.1 生成随机小数(RAND)

RAND函数生成一个大于等于0且小于1的随机浮点数。
示例

SELECT RAND() AS random_float; 

7.2 生成指定范围内的随机整数(FLOOR(RAND() * (max - min + 1)) + min)

通过公式可以生成指定范围内的随机整数。
示例:生成1到100之间的随机整数。

SELECT FLOOR(RAND() * 100) + 1 AS random_integer; 

八、实战案例

8.1 销售数据分析

sales表中,包含product_id(产品ID)、quantity(销售数量)、unit_price(单价)字段,需求是计算每个产品的销售总额,并四舍五入到整数,同时统计销售数量为偶数的产品数量。

SELECT product_id, ROUND(quantity * unit_price) AS total_sales_amount,SUM(CASE WHEN quantity % 2 = 0 THEN 1 ELSE 0 END) AS even_quantity_count
FROM sales
GROUP BY product_id;

8.2 抽奖活动数据生成

为模拟抽奖活动,需要在participants表中为每个参与者生成一个1到1000的随机抽奖号码lottery_number

UPDATE participants
SET lottery_number = FLOOR(RAND() * 1000) + 1;

8.3 科学计算场景

在一个物理实验数据记录表experiment_data中,有velocity(速度)字段,需要根据速度计算对应的动能(动能公式: E k = 1 2 m v 2 E_k = \frac{1}{2}mv^2 Ek=21mv2,假设质量m = 1),并以科学计数法显示结果。

SELECT velocity, FORMAT(0.5 * POW(velocity, 2), 2, 'e') AS kinetic_energy
FROM experiment_data;

若这篇内容帮到你,动动手指支持下!关注不迷路,干货持续输出!
ヾ(´∀ ˋ)ノヾ(´∀ ˋ)ノヾ(´∀ ˋ)ノヾ(´∀ ˋ)ノヾ(´∀ ˋ)ノ

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/pingmian/84942.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

13、Redis进阶二之Redis数据安全性分析

⼀ 、Redis性能压测脚本介绍 Redis的所有数据是保存在内存当中的, 得益于内存⾼效的读写性能, Redis的性能是⾮常强悍的 。但 是,内存的缺点是断电即丢失,所以 ,在实际项⽬中, Redis—旦需要保存—些重要的…

【系统分析师】2011年真题:综合知识-答案及详解

文章目录 【第1题】【第2~3题】【第4~5题】【第6题】【第7~8题】【第9题】【第10题】【第11题】【第12题】【第13题】【第14题】【第15题】【第16题】【第17题】【第18题】【第19~20题】【第21题】【第22题】【第23题】【第24~25题】【第26题】【第27题】【第28题】【第29题】【…

FastAPI-MCP构建自定义MCP工具实操指南

一、简介 • FastAPI-MCP是一个基于python FastAPI框架开发的开源项目,可以自动识别并暴露FastAPI接口为MCP工具 • 拥有FastAPI框架的所有优点,如异步高并发、独立远程部署、OpenAPI文档 • 提供SSE、mcp-remote接入方式,支持设置授权访问…

LLMs之Memory:《LLMs Do Not Have Human-Like Working Memory》翻译与解读

LLMs之Memory:《LLMs Do Not Have Human-Like Working Memory》翻译与解读 导读:该论文通过三个精心设计的实验,证明了当前的大型语言模型(LLMs)缺乏类似人类的工作记忆。实验结果表明,LLMs无法在没有明确外…

Node.js验证码:从生成到验证的趣味之旅

文章目录 Node.js验证码:从生成到验证的趣味之旅📜 引言:为什么需要验证码?1. 验证码的基本原理 🧠验证码工作流程示意图 2. 技术栈准备 🛠️3. 验证码生成详解 🎨3.1 生成SVG验证码3.2 转换为P…

芯科科技携最新Matter演示和参考应用精彩亮相Matter开放日和开发者大会

全面展示赋能Matter设备实现跨协议和跨海内外生态的技术能力 作为Matter标准创始厂商之一和其解决方案的领先供应商,Silicon Labs(亦称“芯科科技”)于6月12至13日参加由连接标准联盟中国成员组(CMGC)主办的Matter年度…

AndroidStudio下载的SDK没有tool目录,或者想要使用uiautomatorviewer工具

1.如果没有tool目录可以使用下面的地址进行下载 https://dl.google.com/android/repository/tools_r25.2.5-windows.zip 2.并且把下载的文件解压到放在AndroidStudio的目录中 3.如果使用uiautomatorviewer.bat出现下面的错误 Unable to connect to adb.Check if adb is instal…

FastJSON等工具序列化特殊字符时会加转义字符\

在Java中JSON数据格式用String接收时,此时在FastJSON层面看来该JSON只是普通字符串,所以对原字符串序列化会得到转义字符\ 得到转义后字符串,再反序列化转义后字符串会得到原字符串 String json"{\"name\": \"张三\&quo…

数据结构 学习 队列 2025年6月14日 11点22分

循环队列 循环队列是一种线性数据结构,它遵循FIFO(先进先出)原则,但与普通队列不同的是,循环队列的最后一个元素连接回第一个元素,形成一个环形结构。这种设计有效解决了普通队列的"假溢出"问题&…

打造丝滑滚动体验:Scroll-driven Animations 正式上线!

🌀 打造丝滑滚动体验:Scroll-driven Animations 正式上线! 🚨 告别 JS 手动监听滚动条,CSS 新能力让你用两行代码实现高级滚动动效。 🔍 什么是 Scroll-driven Animations? Scroll-driven anim…

知识体系_研究模型_价格敏感度测试模型(PSM)

1 概述 价格敏感度测试模型(Price Sensitivity Measurement,PSM) ,通过调研潜在用户对于不同价格的满意或接受程度,从而制定出合适的产品价格。 价格敏感度PSM模型的分析一般分为以下几个步骤: (1)确定多个价格 (2)通过一定的方式(通常是问卷)收集目标客户对不同价…

C++11函数封装器 std::function

✅ 1. 什么是 std::function std::function 是 C11 引入的标准库工具,是一个通用的函数封装器,可以包装以下任意可调用对象: 普通函数Lambda 表达式函数指针成员函数指针函数对象(也叫仿函数,定义了 operator() 的类…

centos系统docker配置`milvus-standalone`教程

本人使用的是京东云服务器docker配置milvus 参考教程:https://blog.csdn.net/withme977/article/details/137270087 需要注意:虚拟机安装pymilvus和docker安装milvus版本需要对应,否则会出现connection失败问题 查看虚拟机pymilvus版本&…

AI for 数据分析:技术演进与应用实践

一、AI 数据分析的核心定义与技术演进 概念延伸:从传统分析到智能分析 传统数据分析工作,主要依赖人工使用 Excel、SPSS 等统计工具进行建模与分析。这种方式不仅效率较低,而且对专业人员的依赖度极高。而 AI 驱动的数据分析则借助机器学习…

stm32 f103c8t6仿真 串口收发测试

C8T6串口概述 STM32F103C8T6微控制器包含3个串口模块: USART1 (高级串口) USART2 USART3 (部分型号可能标记为UART3) 引脚分布图 USART1 (串口1) 基本特性 类型:全功能USART(通用同步异步收发器) 通信模式: 全双工异步通信 单线半…

语言特性适用的场景:卫星、火箭控制系统用什么开发语言?

核心飞行控制系统开发语言 卫星、火箭及相关航天系统的软件开发对可靠性、实时性、安全性有极高要求,因此语言选择需严格匹配这些需求。以下是航天领域常用的编程语言及其应用场景分析: 一、核心飞行控制与嵌入式系统:C、C、Ada 航天器的核…

AI for Science:智能科技如何重塑科学研究

AI与科学研究的邂逅 人工智能(Artificial Intelligence,简称AI)作为一门致力于模拟人类智能的交叉学科,近年来已经从实验室走向现实世界的各个角落,而科学研究领域正是其最具变革潜力的舞台之一。AI的核心在于通过算法…

项目三 - 任务7:开发名片管理系统

在本次项目三的任务7中,我们成功开发了一个功能全面的名片管理系统。该系统采用Java语言,基于MVC(模型-视图-控制器)架构模式,实现了用户登录、名片的增删改查等核心功能。通过设计Card类来封装名片信息,Ca…

MySQL 8.0 OCP 英文题库解析(十八)

Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题161~170 试题1…