MySQL常用數值函數

来源:https://www.cnblogs.com/tianming18/archive/2019/01/16/10275388.html
-Advertisement-
Play Games

數值函數: 用來處理很多數值方面的運算,使用數值函數,可以免去很多繁雜的判斷求值的過程,能夠大大提高用戶的工作效率。 1、ABS(x):返回 x 的絕對值 2、CEIL(x):返回不小於 x 的最小整數,也就是說得大於或等於x的最小整數 同義詞:ceiling(x) 3、FLOOR(x):返回不大於 ...


數值函數:

  用來處理很多數值方面的運算,使用數值函數,可以免去很多繁雜的判斷求值的過程,能夠大大提高用戶的工作效率。

1、ABS(x):返回 x 的絕對值

mysql> select abs(-0.8),abs(0.8);
+-----------+----------+
| abs(-0.8) | abs(0.8) |
+-----------+----------+
|       0.8 |      0.8 |
+-----------+----------+

 

2、CEIL(x):返回不小於 x 的最小整數,也就是說得大於或等於x的最小整數

  同義詞:ceiling(x)

mysql> select ceil(1);
+---------+
| ceil(1) |
+---------+
|       1 |
+---------+

mysql> select ceil(1.23),ceiling(-1.23);
+------------+----------------+
| ceil(1.23) | ceiling(-1.23) |
+------------+----------------+
|          2 |             -1 |
+------------+----------------+

 

3、FLOOR(x):返回不大於 x 的最大整數(與CEIL的用法剛好相反)

mysql> select floor(1.23),floor(-1.23);
+-------------+--------------+
| floor(1.23) | floor(-1.23) |
+-------------+--------------+
|           1 |           -2 |
+-------------+--------------+

 

4、MOD(x,y):返回數字x除以y後的餘數:x mod y

  和 x%y 的結果相同;

  模數和被模數任何一個為NULL(無效數)結果都為 NULL

mysql> select mod(123,10),234%7,3 mod 2;
+-------------+-------+---------+
| mod(123,10) | 234%7 | 3 mod 2 |
+-------------+-------+---------+
|           3 |     3 |       1 |
+-------------+-------+---------+

註意:餘數可以有小數;除數為0不拋出異常

mysql> select mod(3.14,3),mod(3,0);
+-------------+----------+
| mod(3.14,3) | mod(3,0) |
+-------------+----------+
|        0.14 |     NULL |
+-------------+----------+

 

5、ROUND(X[,D]):將數字X四捨五入到指定的小數位數D

  ①如果不指定D,則預設為0

  ②如果D是負數,表示從小數點的左邊進行四捨五入

mysql> select round(1.58),round(1.298,1);
+-------------+----------------+
| round(1.58) | round(1.298,1) |
+-------------+----------------+
|           2 |            1.3 |
+-------------+----------------+

mysql> select round(1.58,0),round(1.298,-1);
+---------------+-----------------+
| round(1.58,0) | round(1.298,-1) |
+---------------+-----------------+
|             2 |               0 |
+---------------+-----------------+

 

6、TRUNCATE(X,D):將數字X截斷到指定的小數位數D(不四捨五入)

  ①如果D為0,表示不要小數

  ②如果D是負數,表示從小數點的左邊進行截斷

mysql> select truncate(1.999,1),truncate(1.999,0);
+-------------------+-------------------+
| truncate(1.999,1) | truncate(1.999,0) |
+-------------------+-------------------+
|               1.9 |                 1 |
+-------------------+-------------------+

mysql> select truncate(-1.999,1),truncate(123,-2);
+--------------------+------------------+
| truncate(-1.999,1) | truncate(123,-2) |
+--------------------+------------------+
|               -1.9 |              100 |
+--------------------+------------------+

註意:TRUNCATE 和 ROUND 的區別在於 TRUNCATE 僅僅是截斷,而不進行四捨五入

mysql> select round(1.235,2),truncate(1.235,2);
+----------------+-------------------+
| round(1.235,2) | truncate(1.235,2) |
+----------------+-------------------+
|           1.24 |              1.23 |
+----------------+-------------------+

 

7、RAND():返回一個隨機浮點數v(0<=v<1.0)

mysql> select rand(),rand();
+--------------------+---------------------+
| rand()             | rand()              |
+--------------------+---------------------+
| 0.7085628693071779 | 0.19879874978102627 |
+--------------------+---------------------+

RAND(x):指定整數x,則用作種子值,產生一個可重覆的數字序列

mysql> select rand(1),rand(2),rand(1);
+---------------------+--------------------+---------------------+
| rand(1)             | rand(2)            | rand(1)             |
+---------------------+--------------------+---------------------+
| 0.40540353712197724 | 0.6555866465490187 | 0.40540353712197724 |
+---------------------+--------------------+---------------------+

利用RAND()函數可以取任意指定範圍內的隨機數

  類似於shell> $((RANDOM % 100))得到隨機值  

比如:產生 0~100 內的任意隨機整數

mysql> select ceil(100*rand()),ceil(100*rand());
+------------------+------------------+
| ceil(100*rand()) | ceil(100*rand()) |
+------------------+------------------+
|               87 |               75 |
+------------------+------------------+

 若要得到一個隨機整數R,i <= R < j

expr:FLOOR(i + RAND() * (j - i))

  Q:取隨機整數R,7<=R<12

  A:mysql> select floor(7+(rand()*5));

註意:

  ①當在 WHERE 子句中使用RAND()時,每次當WHERE執行時都要重新計算 RAND()

  ②不能在ORDER BY子句中使用帶有隨機值的列

但是,可以以隨機的順序從表中檢索行

  例如:mysql> SELECT * FROM  players ORDER BY RAND();

  ③ORDER BY RAND()常和LIMIT子句一起使用:

  例如:mysql> SELECT * FROM table1,table2 WHERE a=b AND c<d  ORDER BY RAND() LIMIT 1000;


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、下載禪道,並傳到你的伺服器上面的/opt文件下。 二、使用命令解壓。 三、如果你伺服器上面原本就安裝了LNMP環境的,需要先停掉nginx和mysql服務。以前就是因為禪道有自帶的apache和mysql。 四、啟動禪道 五,修改禪道的埠和mysql的埠; 註意不要亂改mysql的埠,我改 ...
  • 狂神聲明 : 文章均為自己的學習筆記 , 轉載一定註明出處 ; 編輯不易 , 防君子不防小人~共勉 ! linux學習:【第3篇】遠程連接及軟體安裝 遠程連接 xshell , xftp軟體官網 : netsarang官網 Xftp : 遠程文件傳輸軟體 遠程協議使用SFTP , 埠 : 22 X ...
  • 一. 庫的操作 1.創建資料庫 創建資料庫: create database 庫名 charset utf8; charset uft8 可選項 1.2 資料庫命名規範: 可以由字母、數字、下劃線、@、#、$ 區分大小寫 唯一性 不能使用關鍵字如 create select 不能單獨使用數字 最長1 ...
  • [oracle@testrac2 11204]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on Wed Jan 16 18:50:03 2019 Copyright (c) 1982, 2013, Oracle. All ...
  • Hive+Sqoop+Mysql整合 在本文中,LZ隨意想到了一個場景: 車,道路,監控,攝像頭 ...
  • 一.用SET PASSWORD命令 首先登錄MySQL,使用mysql自帶的那個客戶端連接上mysql。 格式:mysql> set password for 用戶名@localhost = password('新密碼'); 例子:mysql> set password for root@local ...
  • sysdate 【功能】:返回當前日期。 【參數】:沒有參數,沒有括弧 【返回】:日期 【示例】select sysdate hz from dual; 返回:2008-11-5 add_months(d1,n1) 【功能】:返回在日期d1基礎上再加n1個月後新的日期。 【參數】:d1,日期型,n1 ...
  • [oracle@sgdSSD-32 response]$ vi /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localhost.localdo ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...