2

=PostgreSQLでオペレーターのオペレーターエイリアスを定義する簡単な方法はありますか?

!=と演算子のそれはどのように解決され<>ますか?演算子だけ<>がpg_operatorsにあるようです。オペレーターは!=ハードコーディングされていますか?

これは、自己定義の演算子を使用するアプリケーションに必要です。ほとんどの環境では、この演算子はのように動作するはずです=が、独自の演算子と演算子クラスを作成して特別な動作を定義する場合もあります。ただし、通常の場合、演算子は=演算子のエイリアスである必要があります。これにより、実装が使用されるアプリケーションに対して透過的になります。

4

1 に答える 1

1

スキーマpg_catalogであるpgAdminを確認するだけです。すべての演算子があり、すべてのデータ型に対してそれらを作成する方法を示しています。はい、すべてのデータ型に対してそれらを作成する必要があります。したがって、これは単一の「エイリアス」ではなく、多くのエイリアスが必要です。

!!!!を使用したchar=charの例 エイリアスとして:

CREATE OPERATOR !!!!   -- name
(
  PROCEDURE = pg_catalog.chareq,
  LEFTARG = "char",
  RIGHTARG = "char",
  COMMUTATOR = !!!!, -- the same as the name
  RESTRICT = eqsel,
  JOIN = eqjoinsel,
  HASHES,
  MERGES
);
SELECT 'a' !!!! 'a' -- true
SELECT 'a' !!!! 'b' -- false

マニュアルも確認し、命名規則に注意してください。いくつかの制限があります。

于 2010-08-12T18:09:08.423 に答える