| PostgreSQL 7.4 文檔 | ||||
|---|---|---|---|---|
| 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-3 所示。給 &,|,和 # 的位串參數必須是等長的。在移位的時候,將保留字串的原始長度,如表所示。
Table 9-3. 位串按位操作符
| 例子 | 結果 |
|---|---|
| B'10001' & B'01101' | 00001 |
| B'10001' | B'01101' | 11101 |
| B'10001' # B'01101' | 11110 |
| ~ B'10001' | 01110 |
| B'10001' << 3 | 01000 |
| B'10001' >> 2 | 00100 |
Table 9-4 顯示了可用的數學函數。 在該表中,dp 表示double precision。 這些函數中有許多都有多種不同的形式,區別是參數不同。 除非特別指明,任何特定形式的函數都返回和它的參數相同的數據類型。 處理 double precision 數據的函數大多數是在 宿主系統的 C 庫的基礎上實現的;因此,準確度和 數值範圍方面的行為是根據宿主系統而變化的。
Table 9-4. 數學函數
| 函數 | 返回類型 | 描述 | 例子 | 結果 |
|---|---|---|---|---|
| abs(x) | (和x類型相同) | 絕對值 | abs(-17.4) | 17.4 |
| cbrt(dp) | dp | 立方根 | cbrt(27.0) | 3 |
| ceil(dp 或者 numeric) | 與輸入相同 | 不小于參數的最小的整數 | ceil(-42.8) | -42 |
| 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 |
| pow(a dp, b dp) | dp | 求a的 b 次冪 | pow(9.0, 3.0) | 729 |
| pow(a numeric, b numeric) | numeric | 求a的 b 次冪 | pow(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) | 為隨後的 random() 調用設置種子 | setseed(0.54823) | ||
| 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 |
最後,Table 9-5 顯示了可用的三角函數。 所有三角函數都有類型為 double precision 的參數和返回類型。