亚洲乱色熟女一区二区三区丝袜,天堂√中文最新版在线,亚洲精品乱码久久久久久蜜桃图片,香蕉久久久久久av成人,欧美丰满熟妇bbb久久久

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

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

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

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

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

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

絕對值函數(shù)

ABS(x) 函數(shù)計算輸入?yún)?shù)的絕對值,例如:

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

查詢返回的結(jié)果如下:

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

取整函數(shù)

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

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

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

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

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

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

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

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

求余函數(shù)

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

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

Oracle、MySQL 以及 PostgreSQL 實現(xiàn)了 MOD 函數(shù)。查詢返回的結(jié)果如下:

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

Microsoft SQL Server 和 SQLite 沒有提供 MOD 函數(shù),可以使用%運(yùn)算符進(jìn)行求模運(yùn)算:

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

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

生成偽隨機(jī)數(shù)

通過計算機(jī)生成的隨機(jī)數(shù)都是偽隨機(jī)數(shù),數(shù)據(jù)庫都提供了生成偽隨機(jī)數(shù)的函數(shù)。

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

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

對于 MySQL 而言,在一個查詢語句中的多次 RAND 函數(shù)調(diào)用都會返回不同的隨機(jī)數(shù)。查詢返回的結(jié)果如下:

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

對于 Microsoft SQL Server 而言,在一個查詢語句中的多次 RAND 函數(shù)調(diào)用返回相同的隨機(jī)數(shù)。查詢返回的結(jié)果如下:

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

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

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

其中,函數(shù)中的參數(shù) 1 是隨機(jī)數(shù)種子。多次執(zhí)行以上查詢將會返回相同的結(jié)果。

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

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

查詢返回的結(jié)果如下:

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

對于 Oracle,每次調(diào)用 RAND 函數(shù)都會返回不同的隨機(jī)數(shù)。

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

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

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

查詢返回的結(jié)果如下:

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

對于 PostgreSQL,每次調(diào)用 RANDOM 函數(shù)都會返回不同的隨機(jī)數(shù)。如果想要重現(xiàn)相同的隨機(jī)數(shù),可以使用 SETSEED 函數(shù)。例如,重復(fù)執(zhí)行以下兩個語句可以得到相同的隨機(jī)數(shù):

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

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

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

查詢返回的結(jié)果如下:

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

對于 SQLite,每次調(diào)用 RANDOM 函數(shù)都會返回不同的隨機(jī)數(shù)。SQLite 不支持隨機(jī)數(shù)種子設(shè)置,無法重現(xiàn)相同的隨機(jī)數(shù)。

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


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