PostgreSQL ユーザーズガイド | ||
---|---|---|
Prev | Next |
Postgres では,システム型に対して 多くの種類の組み込み演算子が提供されています. これらの演算子は,システムカタログ pg_operator の中で宣言 されています.pg_operator の中の各エントリは,演算子を実装する 手続きの名前と入出力の型のクラス OIDs により 構成されています.
では,“||” 文字列連結演算子のすべてのバリエーションを 見てみましょう.
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)
Table 5-1. Postgres 演算子
演算子 | 説明 | 使用法 |
---|---|---|
< | より小さい | 1 < 2 |
<= | より小さいか等しい | 1 <= 2 |
<> | 等しくない | 1 <> 2 |
= | 等しい | 1 = 1 |
> | より大きい | 2 > 1 |
>= | より大きいか等しい | 2 >= 1 |
|| | 文字列の連結 | 'Postgre' || 'SQL' |
!!= | NOT IN | 3 !!= i |
~~ | LIKE | 'scrappy,marc,hermit' ~~ '%scrappy%' |
!~~ | NOT LIKE | 'bruce' !~~ '%al%' |
~ | (正規表現に)マッチする、大文字小文字を意識する | 'thomas' ~ '*.thomas*.' |
~* | (正規表現に)マッチする、大文字小文字を意識しない | 'thomas' ~* '*.Thomas*.' |
!~ | (正規表現に)マッチしない、大文字小文字を意識する | 'thomas' !~ '*.Thomas*.' |
!~* | (正規表現に)マッチしない、大文字小文字を意識しない | 'thomas' !~ '*.vadim*.' |
Table 5-2. Postgres 数値演算子
演算子 | 説明 | 使用法 |
---|---|---|
! | 階乗 | 3 ! |
!! | 階乗(左演算子) | !! 3 |
% | 剰余 | 5 % 4 |
% | 切り捨て | % 4.5 |
* | 乗算 | 2 * 3 |
+ | 加算 | 2 + 3 |
- | 減算 | 2 - 3 |
/ | 除算 | 4 / 2 |
: | 自然指数 | : 3.0 |
; | 自然対数 | (; 5.0) |
@ | 絶対値 | @ -5.0 |
^ | 指数 | 2.0 ^ 3.0 |
|/ | 平方根 | |/ 25.0 |
||/ | 立方根 | ||/ 27.0 |
Table 5-3. 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 |
@-@ | 長さまたは円周e | @-@ '((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 はオリジナルの日付/時刻型 からの遺物であり、より現代的な型としてはもはやサポートされていません。 この型にはいくつかの演算子があります。
Table 5-4. Postgres 時刻間隔演算子
演算子 | 説明 | 使用法 |
---|---|---|
#< | 間隔がより小さい | |
#<= | 間隔がより小さいか等しい | |
#<> | 間隔が等しくない | |
#= | 間隔が等しい | |
#> | 間隔がより大きい | |
#>= | 間隔がより大きいか等しい | |
<#> | 時刻間隔への変換 | |
<< | 間隔がより小さい | |
| | 間隔の開始 | |
~= | 〜と同じ | |
<?> | 時刻が間隔の間にあるか |
ユーザは演算子名を使って、以下のように演算子を呼び出す ことができます。
select * from 従業員 where 給与 < 40000;もしくは、演算子を実装している関数を直に呼び出すこともできます。 このケースでは、上の問い合わせは以下のように表すことができます。
select * from 従業員 where int4lt(給与, 40000);
psql には、これらの演算子を表示するための \dd コマンドがあります。
Prev | Home | Next |
座標型 | 関数 |