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?=21?mv2,假設質量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
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/84942.shtml
英文地址,請注明出處:http://en.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…