偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

五種主流數(shù)據(jù)庫:常用數(shù)值函數(shù)

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

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ù)功能

MySQL

Oracle

SQL Server

PostgreSQL

SQLite

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_RANDOM

RAND()

??

??

絕對值函數(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í)行四舍五入運算。例如:

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í)行求模運算。例如:

-- 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ù),可以使用%運算符進(jì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

一般來說,如果你運行上面的示例將會得到不同的隨機(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ù)。

責(zé)任編輯:華軒 來源: SQL編程思想
相關(guān)推薦

2024-03-05 15:26:03

日期函數(shù)數(shù)據(jù)庫MySQL

2024-05-07 14:18:18

數(shù)據(jù)庫SQLMySQL

2024-01-31 16:46:24

SQL數(shù)據(jù)庫

2011-09-21 11:21:00

NoSQL

2021-02-01 10:17:14

編程C語言計算機(jī)

2022-02-17 11:03:33

數(shù)據(jù)庫基礎(chǔ)語法用法

2011-03-01 09:10:19

開源數(shù)據(jù)庫

2010-04-15 15:52:12

Oracle數(shù)據(jù)庫

2011-07-13 09:58:15

HBase

2011-05-16 10:29:44

HandlerSockNoSQL

2018-07-30 09:06:46

大數(shù)據(jù)Hadoop數(shù)據(jù)架構(gòu)

2010-03-05 16:03:30

Python連接數(shù)據(jù)庫

2020-11-23 16:42:38

數(shù)據(jù)庫MySQL技術(shù)

2011-07-06 16:36:40

Redis

2023-11-13 15:36:24

開源數(shù)據(jù)庫

2011-05-30 09:27:35

NoSQL評測

2011-04-14 09:27:37

內(nèi)存數(shù)據(jù)庫

2022-06-10 09:00:00

數(shù)據(jù)庫分布式數(shù)據(jù)庫集群

2021-01-13 15:13:07

Python開發(fā) 工具

2011-05-13 13:38:49

數(shù)據(jù)庫對象
點贊
收藏

51CTO技術(shù)棧公眾號