| PostgreSQL 8.0.0 中文文件(轉譯自 PostgreSQL 中國 製作的簡體中文版本) | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Chapter 9. 函數和操作符 | Fast Forward | Next |
PostgreSQL 為許多類型提供了數學操作符。 對於那些在所有可能的組合中都沒有一般的數學傳統的類型 (比如,日期/時間類型),我們在隨後的章節裡描述實際的行為。
Table 9-2 顯示了可用的數學操作符。
Table 9-2. 數學操作符
| 操作符 | 描述 | 例子 | 結果 |
|---|---|---|---|
| + | 加 | 2 + 3 | 5 |
| - | 減 | 2 - 3 | -1 |
| * | 乘 | 2 * 3 | 6 |
| / | 除 (整數除法將截斷結果) | 4 / 2 | 2 |
| % | 模除 (求余) | 5 % 4 | 1 |
| ^ | 冪(指數運算) | 2.0 ^ 3.0 | 8 |
| |/ | 平方根 | |/ 25.0 | 5 |
| ||/ | 立方根 | ||/ 27.0 | 3 |
| ! | 階乘 | 5 ! | 120 |
| !! | 階乘 (前綴作符) | !! 5 | 120 |
| @ | 絕對值 | @ -5.0 | 5 |
| & | 二進制 AND | 91 & 15 | 11 |
| | | 二進制 OR | 32 | 3 | 35 |
| # | 二進制 XOR | 17 # 5 | 20 |
| ~ | 二進制 NOT | ~1 | -2 |
| << | 二進制左移 | 1 << 4 | 16 |
| >> | 二進制右移 | 8 >> 2 | 2 |
按位操作操作符只能用於整數資料類型,而其它的操作符可以用於全部數值資料類型。 按位操作的操作符還可以用於位串類型 bit 和 bit varying, 如 Table 9-10 所示。
Table 9-3 顯示了可用的數學函數。 在該資料表中,dp 資料表示double precision。 這些函數中有許多都有多種不同的形式,區別是參數不同。 除非特別指明,任何特定形式的函數都返回和它的參數相同的資料類型。 處理 double precision 資料的函數大多數是在 宿主系統的 C 庫的基礎上實現的;因此,準確度和 數值範圍方面的行為是根據宿主系統而變化的。
Table 9-3. 數學函數
| 函數 | 返回類型 | 描述 | 例子 | 結果 |
|---|---|---|---|---|
| abs(x) | (和x類型相同) | 絕對值 | abs(-17.4) | 17.4 |
| cbrt(dp) | dp | 立方根 | cbrt(27.0) | 3 |
| ceil(dp 或者 numeric) | 與輸入相同 | 不小於參數的最小的整數 | ceil(-42.8) | -42 |
| ceiling(dp or numeric) | (與輸入相同) | 不小於參數的最小整數(ceil 的別名) | ceiling(-95.3) | -95 |
| degrees(dp) | dp | 把弧度轉為角度 | degrees(0.5) | 28.6478897565412 |
| exp(dp 或 numeric) | 與輸入相同 | 自然指數 | exp(1.0) | 2.71828182845905 |
| floor(dp 或 numeric) | 與輸入相同 | 不大於參數的最大整數 | floor(-42.8) | -43 |
| ln(dp 或 numeric) | 與輸入相同 | 自然對數 | ln(2.0) | 0.693147180559945 |
| log(dp 或 numeric) | 與輸入相同 | 10 為底的對數 | log(100.0) | 2 |
| log(b numeric, x numeric) | numeric | 指定底數的對數 | log(2.0, 64.0) | 6.0000000000 |
| mod(y, x) | (和參數類型相同) | 除法 y/x 的餘數(模) | mod(9,4) | 1 |
| pi() | dp | "π" 常量 | pi() | 3.14159265358979 |
| power(a dp, b dp) | dp | 求a的 b 次冪 | power(9.0, 3.0) | 729 |
| power(a numeric, b numeric) | numeric | 求a的 b 次冪 | power(9.0, 3.0) | 729 |
| radians(dp) | dp | 把角度轉為弧度 | radians(45.0) | 0.785398163397448 |
| random() | dp | 0.0 到 1.0 之間的隨機數值 | random() | |
| round(dp 或者 numeric) | (與輸入相同) | 圓整為最接近的整數 | round(42.4) | 42 |
| round(v numeric, s integer) | numeric | 圓整為s位小數數字 | round(42.4382, 2) | 42.44 |
| setseed(dp) | integer | 為隨後的 random() 調用設置種子 | setseed(0.54823) | 1177314959 |
| sign(dp 或者 numeric) | (和輸入相同) | 參數的符號(-1, 0, +1) | sign(-8.4) | -1 |
| sqrt(dp 或者 numeric) | (和輸入相同) | 平方根 | sqrt(2.0) | 1.4142135623731 |
| trunc(dp 或者 numeric) | (和輸入相同) | 截斷(向零靠近) | trunc(42.8) | 42 |
| trunc(v numeric, s integer) | numeric | 截斷為 s 小數位置的數字 | trunc(42.4382, 2) | 42.43 |
| width_bucket(op numeric, b1 numeric, b2 numeric, count integer) | integer | 返回一個桶,這個桶是在一個有 count 個桶, 上界為 b1,下界為 b2 的等深柱圖中 operand 將被賦予的那個桶。 | width_bucket(5.35, 0.024, 10.06, 5) | 3 |
最後,Table 9-4 顯示了可用的三角函數。 所有三角函數都有類型為 double precision 的參數和返回類型。