狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

五種主流數據庫MySQL/Oracle/SQLServer/PostgreSQL/SQLite常用數值函數ABS/CEILING/FLOOR/MOD/ROUND/RANDOM

admin
2024年3月15日 10:7 本文熱度 700

SQL 的主要功能就是對數據進行處理和分析。為了提高數據處理的效率,SQL 為我們提供了許多預定義的功能模塊,也就是函數(Function)。

數值函數通常接收一個或者多個數字類型的參數,并且返回一個數值結果。本文比較五種主流數據庫常用數值函數的實現和差異,包括 MySQL、Oracle、SQL Server、PostgreSQL 以及 SQLite。

數值函數函數功能MySQLOracleSQL ServerPostgreSQLSQLite
ABS(x)計算x的絕對值✔️✔️✔️✔️✔️
CEILING(x)返回大于或等于x的最小整數✔️CEIL(x)✔️✔️CEIL(x)
FLOOR(x)返回小于或等于x的最大整數✔️✔️✔️✔️✔️
MOD(x, y)計算x除以y的余數✔️✔️x % y✔️x % y
ROUND(x, n)將x四舍五入到n位小數✔️✔️✔️✔️✔️
RANDOM()返回一個偽隨機數RAND()DBMS_RANDOMRAND()✔️✔️

絕對值函數

ABS(x) 函數計算輸入參數的絕對值,例如:

SELECT ABS(-1), ABS(1), ABS(0)
FROM employee
WHERE emp_id = 1;

查詢返回的結果如下:

ABS(-1)|ABS(1)|ABS(0)
-------|------|------
     1|     1| 0

取整函數

CEIL(x) 和 CEILING(x) 函數返回大于或等于 x 的最小整數,也就是向上取整。FLOOR(x) 函數返回小于或等于 x 的最大整數,也就是向下取整。例如:

SELECT CEIL(-2), CEILING(-2), FLOOR(4.5)
FROM employee
WHERE emp_id = 1;

Oracle 不支持 CEILING(x) 函數,Microsoft SQL Server 不支持 CEIL(x) 函數。查詢返回的結果如下:

CEIL(-2)|CEILING(-2)|FLOOR(4.5)
--------|-----------|----------
     -2|         -2| 4

ROUND(x, n) 函數將 x 四舍五入到 n 位小數,也就是執行四舍五入運算。例如:

SELECT ROUND(9.456, 1), ROUND(9.456)
FROM employee
WHERE emp_id = 1;

第二個函數調用時省略了參數 n,表示四舍五入到整數。Microsoft SQL Server 不能省略參數 n,可以將 ROUND(9.456) 替換成 ROUND(9.456, 0)。查詢返回的結果如下:

ROUND(9.456, 1)|ROUND(9.456)
---------------|------------
           9.5| 9

求余函數

MOD(x, y)函數計算 x 除以 y 的余數,也就是執行求模運算。例如:

-- Oracle、MySQL 以及 PostgreSQL
SELECT MOD(5,3)
FROM employee
WHERE emp_id = 1;

Oracle、MySQL 以及 PostgreSQL 實現了 MOD 函數。查詢返回的結果如下:

MOD(5,3)
--------
2

Microsoft SQL Server 和 SQLite 沒有提供 MOD 函數,可以使用%運算符進行求模運算:

-- Microsoft SQL Server、MySQL、PostgreSQL 以及 SQLite
SELECT 5 % 3
FROM employee
WHERE emp_id = 1;

MySQL 和 PostgreSQL 也支持這種語法。查詢返回的結果和上面的示例相同。

生成偽隨機數

通過計算機生成的隨機數都是偽隨機數,數據庫都提供了生成偽隨機數的函數。

MySQL 使用 RAND 函數返回一個大于或等于 0 且小于 1 的隨機數。Microsoft SQL Server 也使用 RAND 函數返回隨機數,但是隨機數的取值范圍為大于 0 且小于 1。例如:

-- MySQL 和 Microsoft SQL Server
SELECT RAND()
FROM employee
WHERE emp_id <= 3;

對于 MySQL 而言,在一個查詢語句中的多次 RAND 函數調用都會返回不同的隨機數。查詢返回的結果如下:

RAND() 
-------------------
0.12597889371773124
0.6288336549222783
0.7662316241918427

對于 Microsoft SQL Server 而言,在一個查詢語句中的多次 RAND 函數調用返回相同的隨機數。查詢返回的結果如下:

RAND() 
-------------------
0.47224141500963573
0.47224141500963573
0.47224141500963573

一般來說,如果你運行上面的示例將會得到不同的隨機數。不過,我們也可以為 RAND 函數指定一個隨機數種子,重現相同的隨機數。例如:

-- MySQL 和 Microsoft SQL Server
SELECT RAND(1);

其中,函數中的參數 1 是隨機數種子。多次執行以上查詢將會返回相同的結果。

Oracle 提供了一個系統程序包 DBMS_RANDOM,其中的 VALUE 函數可以用于返回大于或等于 0 且小于 1 的隨機數。例如:

-- Oracle
SELECT DBMS_RANDOM.VALUE
FROM employee
WHERE emp_id <= 3;

查詢返回的結果如下:

VALUE 
----------------------------------------
0.18048925385153716390255039523196767411
0.3353631757935088547857071602303392595
0.3412188906823928592522036537134902456

對于 Oracle,每次調用 RAND 函數都會返回不同的隨機數。

提示:Oracle 系統程序包 DBMS_RANDOM 中還提供了其他生成隨機數和隨機字符串的函數,以及設置隨機數種子的方法,可以查看其官方文檔。

PostgreSQL 提供了 RANDOM 函數,可以返回一個大于或等于 0 且小于 1 的隨機數。例如:

-- PostgreSQL
SELECT RANDOM()
FROM employee
WHERE emp_id <= 3;

查詢返回的結果如下:

random 
------------------
0.1523788485137807
0.2580784959938427
0.0528612944722024

對于 PostgreSQL,每次調用 RANDOM 函數都會返回不同的隨機數。如果想要重現相同的隨機數,可以使用 SETSEED 函數。例如,重復執行以下兩個語句可以得到相同的隨機數:

-- PostgreSQL
SELECT SETSEED(0);
SELECT RANDOM();

SQLite 也提供了 RANDOM 函數,可以返回一個大于或等于-263 且小于或等于 263-1 的隨機整數。例如:

-- SQLite
SELECT RANDOM()
FROM employee
WHERE emp_id <= 3;

查詢返回的結果如下:

RANDOM() 
--------------------
3344080139226703236
-4444734262945592004
8384000175497818543

對于 SQLite,每次調用 RANDOM 函數都會返回不同的隨機數。SQLite 不支持隨機數種子設置,無法重現相同的隨機數。

提示:除我們上面介紹的函數外,SQL 還提供其他的數值函數,例如乘方和開方函數、對數函數以及三角函數,有需要時可以查看數據庫相關的文檔。


該文章在 2024/3/15 14:53:52 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved