PostgreSQL
PrevNext

Chapter 33. 拡張 SQL:演算子

Postgres では左単項演算子、および 右単項演算子をサポートしています。演算子は、異なった数や型の 引数でオーバーロードしたり再使用したりすることもできます。 もし演算子が曖昧な使い方をされたりして、システムが使用するべき 正しい演算子を決定することができない場合は、エラーが返ります。 その場合は、どの演算子を使いたいのかを明示的に指定するために、 左/右単項演算子を使って型キャストを行ってやる必要があるかも しれません。 2 つの複素数を追加するための演算子を生成したい場合は以下の ようにします。まず、新しい型を追加するための関数を生成する 必要があります。それからその関数を使って演算子を生成します。

         CREATE FUNCTION complex_add(complex, complex)
            RETURNS complex
            AS '$PWD/obj/complex.so'
            LANGUAGE 'c';

         CREATE OPERATOR + (
            leftarg = complex,
            rightarg = complex,
            procedure = complex_add,
            commutator = +
         );

ここでは 2 項演算子を生成しました。単項演算子を生成 するには、単に(左方単項のための) leftarg、または(右方単項 のための) rightarg を省略するだけです。システムに対して 十分な型情報を与えた場合は、システムは自動的に使用するべき 演算子を選択します。

         SELECT (a + b) AS c FROM test_complex;

         +----------------+
         |c               |
         +----------------+
         |(5.2,6.05)      |
         +----------------+
         |(133.42,144.95) |
         +----------------+


PrevHomeNext
ユーザ定義型UpExtending SQL: Aggregates