數值函數列表
正如我們上面所說,DBMS 僅僅存儲某種類型的數據是不夠的,它還需要支持對這些類型的數據進行廣泛的超快速操作。
而且,如您所知,所有 DBMS 都支持各種數字類型和對它們的操作。今天,您將熟悉其中最受歡迎的。
MySQL 中的所有數字函數都可以有條件地分為 5 組:
- 算術運算
- 位操作
- 舍入函數
- 代數函數
- 三角函數
順便說一句,由於使用了 Java 語言,您對其中的許多內容都很熟悉,所以我認為您不會對它們感到驚訝。但讓我們按順序開始。
可以在此處找到完整的功能列表。
算術運算
原則上沒有什麼意外,所有與其他地方相同的標準操作:
# | 例子 | ||
---|---|---|---|
1個 | +, -, *, / | 2+2*2 | 加法、減法、乘法、除法(不完美!) |
2個 | % | 13% 5 | 除法餘數 |
3個 | 模組 | 13MOD5 | 除法餘數 |
4個 | 分區 | 13 分區 5 | 除以整數 |
有趣的是:當兩個整數相除時,你得到一個實數。要除以整數,您需要使用 DIV 運算符。
如果您想得到除以整數的餘數,那麼您需要使用 MOD 或 % 運算符,就像在 Java 語言中一樣。我不會舉例子,因為對我來說,這裡的一切都是顯而易見的。
位操作
您還可以在 SQL 中對數字執行按位運算,這與在 Java 中非常相似。儘管有細微差別。可用位操作列表如下表所示:
# | 例子 | 筆記 | ||
---|---|---|---|---|
1個 | & | 0b1111 & 0b1000 | 按位與 | |
2個 | | | 0b1111 | 0b0001 | 按位或 | |
3個 | ^ | 0b1111^0b1111 | 位異或 | |
4個 | ~ | ~0b1111 | 按位反轉 | |
5個 | >> | 128 >> 5 | 位右移 | |
6個 | << | 2 << 5 | 位左移 | |
7 | BIT_COUNT() | BIT_COUNT(255) | 返回為 1 的位數 |
在 MySQL 8.0 之前,只能對 BIGINT 數據類型進行此類操作,該數據類型為 64 位長,類似於 Java 的 long 類型。然而,在 MySQL 8.0(我們正在考慮)中,這個概念發生了變化。現在這些操作可以在特殊的二進制類型上執行:
- 二進制
- 可變二進制
- 還有 BLOB 類型(字節數組)
所有其他類型都簡單地轉換為 BIGINT 類型,並像以前一樣執行操作(僅在前 64 位上)。
舍入函數
對於 MySQL 中的捨入函數,您會使用非常熟悉的函數。下表列出了它們:
# | 例子 | 筆記 | |
---|---|---|---|
1個 | 天花板(),天花板() | 天花板 (5.1) = 6 | 四捨五入實數 |
2個 | 地面() | 地板(5.9)= 5 | 向下舍入實數 |
3個 | 圓形的() | 回合(4.1)= 4 | 將實數四捨五入為最接近的整數 |
4個 | 截短() | 截斷(4.123,2)= 4.12 | 將數字截斷到 N 位小數 |
5個 | 蘭德() | 0.61914388706828 | 返回 0 到 1 之間的隨機實數 |
6個 | 蘭德(N) | 0.93845168309142 | 返回一個介於 0 和 1 之間的隨機實數。N 用作種子值 |
自從第一次學習 Java 以來,您已經熟悉了所有捨入函數。此處只有 TRUNCATE() 和 RANDOM(N) 函數值得關注。
TRUNCATE (number, quantity)函數的第一個參數是一個實數,第二個參數是要保留的小數位數。該數字被修剪為所需的小數位數。
至於 RAND(N) 函數,事情有點複雜。您可能知道,計算機無法生成隨機數。相反,它會生成一個所謂的偽隨機數序列。也就是看一個數,不清楚是不是隨機的,但是數列可能已經和隨機差不多了。開發人員通過生成與隨機數非常相似的數字序列來利用這一點。
在這種情況下,序列的每個新數字都是根據基於該序列的前一個數字的棘手規則生成的。因此,如果你將某個起始數(也稱為種子)傳遞給隨機數生成算法,那麼每次你都會收到相同的隨機數序列。
GO TO FULL VERSION