| PostgreSQL | ||
|---|---|---|
| 上一頁 | 第六章. 型態轉換 | 下一頁 |
tgl=> select 2 ^ 3 AS "Exp"; Exp ----- 8 (1 row)分析器對兩個參數都做型態轉換,查詢等效於:
tgl=> select float8(2) ^ float8(3) AS "Exp"; Exp ----- 8 (1 row)或
tgl=> select 2.0 ^ 3.0 AS "Exp"; Exp ----- 8 (1 row)
注意:最後的形式最高效,因為不用調用函數做隱含型態轉換。這對小查詢沒有什麼影響,但可能對那些操作大表的查詢的性能產生較大影響。
有一個未聲明的參數:
tgl=> SELECT text 'abc' || 'def' AS "Text and Unknown"; Text and Unknown ------------------ abcdef (1 row)本例中分析器尋找一個兩個參數都是 text 的符號。因為有一個這樣的符號,它認為另一個參數的型態是text。
聯接未聲明型態:
tgl=> SELECT 'abc' || 'def' AS "Unspecified"; Unspecified ------------- abcdef (1 row)本例中對型態的初始值沒有任何暗示,因為查詢中沒有聲明任何型態。因此,分析器查找所有參數都是字符串類的候選符號。並且它選擇"優選型態",text,作為本查詢字符串類的型態。
注意: 如果用戶定義了一個新的數據型態,並且定義了用於該型態的符號“||”,那麼本查詢將不會像上面寫的那樣成功完成。這時分析器會因為現在有兩類候選符號而無法決定使用哪個。
tgl=> select (4.3 !); ?column? ---------- 24 (1 row)
注意: 這樣做當然會導致一個數學上有疑問的結果,因為非整數的階乘原則沒有定義。但是,資料庫的角色不是數學教學,而是數據操作。如果用戶一定要進行浮點數的階乘,Postgres 將盡可能服從。
| 上一頁 | 首頁 | 下一頁 |
| 型態轉換 | 開頭 | 函數 |