成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

五種主流數據庫:常用數值函數

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

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

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

數值函數

函數功能

MySQL

Oracle

SQL Server

PostgreSQL

SQLite

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_RANDOM

RAND()

??

??

絕對值函數

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-03-05 15:26:03

日期函數數據庫MySQL

2024-05-07 14:18:18

數據庫SQLMySQL

2024-01-31 16:46:24

SQL數據庫

2011-09-21 11:21:00

NoSQL

2021-02-01 10:17:14

編程C語言計算機

2011-03-01 09:10:19

開源數據庫

2022-02-17 11:03:33

數據庫基礎語法用法

2010-04-15 15:52:12

Oracle數據庫

2011-05-16 10:29:44

HandlerSockNoSQL

2011-07-13 09:58:15

HBase

2018-07-30 09:06:46

大數據Hadoop數據架構

2020-11-23 16:42:38

數據庫MySQL技術

2010-03-05 16:03:30

Python連接數據庫

2011-04-14 09:27:37

內存數據庫

2011-07-06 16:36:40

Redis

2011-05-30 09:27:35

NoSQL評測

2023-11-13 15:36:24

開源數據庫

2023-09-15 16:03:59

向量數據庫開源

2021-01-13 15:13:07

Python開發 工具

2022-06-10 09:00:00

數據庫分布式數據庫集群
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久久久久一级 | 91极品视频 | 天天爱综合| 久久久精品视频一区二区三区 | 久久丝袜视频 | 日韩aⅴ视频 | 91精品久久久久久久久 | 欧美日韩一 | 高清成人av | 久久精品一区 | 久久久久国产精品午夜一区 | 天天天天天天操 | 日本精品视频一区二区 | 黄色一级片在线播放 | 国产一区二区毛片 | 久久综合一区二区三区 | 91极品尤物在线播放国产 | 欧美1级 | 中文字幕一区二区三区乱码在线 | 色一情一乱一伦一区二区三区 | 亚洲a视 | 国产乱码高清区二区三区在线 | 在线中文字幕视频 | av中文在线 | 国产一级一级毛片 | 日日夜精品视频 | 国产精品美女www爽爽爽 | 欧美黑人体内she精在线观看 | 日韩免费视频一区二区 | 黄色精品 | 成人伊人 | 欧美激情在线精品一区二区三区 | 日韩高清一区 | 国产视频久久久 | 成人福利在线 | 国产一区二区三区四区 | 一区二区三区四区免费在线观看 | 国产目拍亚洲精品99久久精品 | 中文在线a在线 | 在线国产中文字幕 | 久久最新精品 |