国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > PostgreSQL > 正文

PostgreSQL7.0手冊-用戶手冊-4. 操作符

2019-09-08 23:32:54
字體:
來源:轉載
供稿:網友
第四章. 操作符
內容 
語法優先級 
通用操作符 
數字操作符 
幾何操作符 
時間間隔操作符 
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 左 邏輯或 



--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

通用操作符
這里列出的操作符是為一些常用數據類型定義的,其范圍從數字類型到日期/時間類型。 
表 4-2. Postgres 操作符 
  操作符 描述 例子 
<  小于? 1 < 2 
<=  小于或等于? 1 <= 2 
<>  不等于? 1 <> 2 
=  等于? 1 = 1 
>  大于? 2 > 1 
>=  大于或等于? 2 >= 1 
||  字符串連接 'Postgre' || 'SQL' 
!!=  不在...里 3 !!= i 
~~  像 'scrappy,marc,hermit' ~~ '%scrappy%' 
!~~  不像 'bruce' !~~ '%al%' 
~  匹配 (規則表達式), 大小寫相關 'thomas' ~ '.*thomas.*' 
~*  匹配 (規則表達式), 大小寫無關 'thomas' ~* '.*Thomas.*' 
!~  不匹配(規則表達式), 大小寫相關 'thomas' !~ '.*Thomas.*' 
!~*  不匹配(規則表達式), 大小寫無關 'thomas' !~ '.*vadim.*' 



--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

數字操作符
Table 4-3. Postgres Numerical Operators 
  操作符 描述 例子 
!  階乘 3 ! 
!!  階乘 (左操作符) !! 3 
%  取模 5 % 4 
%  取整 % 4.5 
*  乘 2 * 3 
+  加 2 + 3 
-  減 2 - 3 
/  除 4 / 2 
:  自然冪 : 3.0 
@  絕對值 @ -5.0 
^  求冪 2.0 ^ 3.0 
|/  平方根 |/ 25.0 
||/  立方根 ||/ 27.0 

注意:兩個操作符:":" 和 ";",現在被減少使用,并將在下一個版本刪除。使用對應的函數 exp() 和 ln()。

--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

幾何操作符
表 4-4. Postgres 幾何操作符 
  操作符 描述 例子 
+  平移 '((0,0),(1,1))'::box + '(2.0,0)'::point 
-  平移 '((0,0),(1,1))'::box - '(2.0,0)'::point 
*  伸縮/旋轉 '((0,0),(1,1))'::box * '(2.0,0)'::point 
/  伸縮/旋轉 '((0,0),(2,2))'::box / '(2.0,0)'::point 
#  交 '((1,-1),(-1,1))' # '((1,1),(-1,-1))' 
#  多邊形頂點數 # '((1,0),(0,1),(-1,0))' 
##  最近點 '(0,0)'::point ## '((2,0),(0,2))'::lseg 
&&  重疊? '((0,0),(1,1))'::box && '((0,0),(2,2))'::box 
&<  左重疊? '((0,0),(1,1))'::box &< '((0,0),(2,2))'::box 
&>  右重疊? '((0,0),(3,3))'::box &> '((0,0),(2,2))'::box 
<->  兩者間距離 '((0,0),1)'::circle <-> '((5,0),1)'::circle 
<<  在左邊? '((0,0),1)'::circle << '((5,0),1)'::circle 
<^  低于? '((0,0),1)'::circle <^ '((0,5),1)'::circle 
>>  在右邊? '((5,0),1)'::circle >> '((0,0),1)'::circle 
>^  高于? '((0,5),1)'::circle >^ '((0,0),1)'::circle 
?#  相交或重疊 '((-1,0),(1,0))'::lseg ?# '((-2,-2),(2,2))'::box; 
?-  水平? '(1,0)'::point ?- '(0,0)'::point 
?-|  垂直? '((0,0),(0,1))'::lseg ?-| '((0,0),(1,0))'::lseg 
@-@  長度或周長 @-@ '((0,0),(1,0))'::path 
?|  豎直? '(0,1)'::point ?| '(0,0)'::point 
?||  平行? '((-1,0),(1,0))'::lseg ?|| '((-1,2),(1,2))'::lseg 
@  包含或在...上? '(1,1)'::point @ '((0,0),2)'::circle 
@@  ...的中心 @@ '((0,0),10)'::circle 
~=  與...相同 '((0,0),(1,1))'::polygon ~= '((1,1),(0,0))'::polygon 

--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

時間間隔操作符
 
時間間隔數據類型 tinterval 是初期的日期/時間類型的一個遺留,支持得并不象現代的類型那么好.有一些操作符用于這些類型. 

表4-5. Postgres 時間間隔操作符 
  操作符 描述  用法 
#<   間隔小于 ?   
#<=   間隔小于或等于 ?   
#<>   間隔不等于 ?   
#=   間隔等于 ?   
#>   間隔大于 ?   
#>=   間隔大于或等于 ?   
<#>   轉換成時間間隔   
<<   間隔小于 ?   
|   間隔開始   
~=   與...相同   
  時間在間隔(時間區間)內 ?   



--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

IP V4 CIDR 操作符
表 4-6. PostgresIP V4 CIDR 操作符 
操作符  描述  用法 
<   小于  '192.168.1.5'::cidr < '192.168.1.6'::cidr 
<=   小于或等于  '192.168.1.5'::cidr <= '192.168.1.5'::cidr 
=   等于  '192.168.1.5'::cidr = '192.168.1.5'::cidr 
>=   大于或等于  '192.168.1.5'::cidr >= '192.168.1.5'::cidr 
>   大于  '192.168.1.5'::cidr > '192.168.1.4'::cidr 
<>   不等于  '192.168.1.5'::cidr <> '192.168.1.4'::cidr 
<<   包含于  '192.168.1.5'::cidr << '192.168.1/24'::cidr 
<<=   包含于或等于  '192.168.1/24'::cidr <<= '192.168.1/24'::cidr 
>>   包含  '192.168.1/24'::cidr >> '192.168.1.5'::cidr 
>>=   包含或等于  '192.168.1/24'::cidr >>= '192.168.1/24'::cidr 

--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

IP V4 INET 操作符
表 4-7. PostgresIP V4 INET 操作符 
操作符   描述  用法 
<   小于  '192.168.1.5'::inet < '192.168.1.6'::inet 
<=   小于活等于  '192.168.1.5'::inet <= '192.168.1.5'::inet 
=   等于  '192.168.1.5'::inet = '192.168.1.5'::inet 
>=   大于或等于  '192.168.1.5'::inet >= '192.168.1.5'::inet 
>   大于  '192.168.1.5'::inet > '192.168.1.4'::inet 
<>   不等于  '192.168.1.5'::inet <> '192.168.1.4'::inet 
<<   包含于  '192.168.1.5'::inet << '192.168.1/24'::inet 
<<=   包含于或等于  '192.168.1/24'::inet <<= '192.168.1/24'::inet 
>>   包含  '192.168.1/24'::inet >> '192.168.1.5'::inet 
>>=   包含或等于  '192.168.1/24'::inet >>= '192.168.1/24'::inet 

--------------------------------------------------------------------------------
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 九江市| 宜兰县| 玉龙| 威远县| 旬邑县| 桓台县| 赤水市| 锦屏县| 内江市| 大化| 宜章县| 平遥县| 玉环县| 讷河市| 海宁市| 铜鼓县| 景东| 收藏| 开封市| 句容市| 内乡县| 岢岚县| 玉环县| 罗甸县| 永顺县| 弋阳县| 宝坻区| 永兴县| 丰宁| 咸丰县| 庆安县| 水富县| 西贡区| 博兴县| 盘山县| 崇仁县| 湘西| 河间市| 山东| 关岭| 商南县|