| PostgreSQL | ||
|---|---|---|
| 上一頁 | 第六章. 型態轉換 | 下一頁 |
函數評估
在 pg_proc 系統表裡只定義了一個階乘函數。所以下面的查詢自動將 int2 參數轉換成 int4:
tgl=> select int4fac(int2 '4');
int4fac
-------
24
(1 row)
實際上它被分析器轉換成:
tgl=> select int4fac(int4(int2 '4'));
int4fac
-------
24
(1 row)
在pg_proc裡定義了兩個substr 函數。但是,其刈荿有一個使用兩個參數,參數型態分別是text 和 int4。
如果其中一個字符串常量的型態不明確,其型態直接與唯一的候選函數匹配:
tgl=> select substr('1234', 3);
substr
------
34
(1 row)
如果該字符串定義為型態 varchar,就像大多數從表中取來的數據一樣,分析器將試著將其轉換成text:
tgl=> select substr(varchar '1234', 3);
substr
------
34
(1 row)
被分析器轉換後變成:
tgl=> select substr(text(varchar '1234'), 3);
substr
------
34
(1 row)
注意:分析器中有一些搜索器用於最佳化 char,varchar, 和 text 型態之間的關系。這時,substr 將直接用 varchar 字符串調用,而不是在其中插入一個顯式的型態轉換調用。
而且,如果以 int4 為參數調用函數,分析器將試圖將其轉換成 text:
tgl=> select substr(1234, 3);
substr
------
34
(1 row)
實際上是這樣執行的
tgl=> select substr(text(1234), 3);
substr
------
34
(1 row)
| 上一頁 | 首頁 | 下一頁 |
| 運算符號 | 開頭 | 查詢目標 |