第四章. 符號
-
內容
-
語法優先順序
-
通用符號
-
數字符號
-
幾何符號
-
時間間隔符號
-
IP V4 CIDR 符號
-
IP V4 INET 符號
描述 Postgres
內建的可用符號。
Postgres 提供大量的內建的用於系統型態的符號。這些符號在系統表
pg_operator
中定義。在 pg_operator 裡的每一個入口/記錄都包括符號實現程序名和輸入輸出型態的表OID
。
要想了解所有"||" -字符串連接符號的所有變種,使用下面命令:
SELECT oprleft, oprright, oprresult, oprcode
FROM pg_operator WHERE oprname = '||';
oprleft|oprright|oprresult|oprcode
-------+--------+---------+-------
25| 25| 25|textcat
1042| 1042| 1042|textcat
1043| 1043| 1043|textcat
(3 rows)
用戶可以通過使用符號名來使用符號,例如:
select * from emp where salary < 40000;
當然,用戶可以直接使用符號的實現函數。這時,上面查詢應該這樣表示:
select * from emp where int4lt(salary, 40000);
psql 有一個命令 (\dd) 可以顯示這些符號。
語法優先順序
符號的優先順序現在是語法分析器的硬程式碼。多數符號有相同的優先順序而且是左關聯的。這有可能導致不可預見的後果﹔比如說,布爾符號
"<" 和 ">" 與 "<=" 和 ">=" 有不一樣的優先順序。
表 4-1. 符號順序 (優先順序降序)
| 元素 |
優先順序 |
描述 |
| UNION |
左 |
SQL 選擇構造(select construct) |
| :: |
|
Postgres 型態轉換 |
| [ ] |
左 |
數組分隔符 |
| . |
左 |
表/列分隔符 |
| - |
右 |
負(unary minus ) |
| : |
右 |
冪 |
| | |
左 |
間隔開始(start of interval ) |
| * / % |
左 |
乘,除,模除 |
| + - |
左 |
加減 |
| IS |
|
測試 TRUE, FALSE, NULL |
| ISNULL |
|
測試 NULL |
| NOTNULL |
|
測試 NOT NULL |
| (所有其他符號) |
|
本地和用戶定義 |
| IN |
|
設置成員(set membership) |
| BETWEEN |
|
包含 |
| OVERLAPS |
|
時間間隔重疊 |
| LIKE |
|
字符串模式匹配 |
| < > |
|
布爾不相等 |
| = |
右 |
相等 |
| NOT |
右 |
非 |
| AND |
左 |
邏輯與 |
| OR |
左 |
邏輯或 |