sql >> データベース >  >> RDS >> PostgreSQL

postgresql 9.3データ型をキャストして、片側だけに影響を与える方法はありますか?

    キャストには3種類あります。ソースの登録済みキャストターゲットタイプは、「割り当て」(a)である必要があります ) または"暗黙的"(i VALUESで動作する INSERTの式 声明。 システムカタログpg_castを見る booleanからのキャスト integer "explicit"(e)のみが定義されています )

    SELECT castsource::regtype, casttarget::regtype, castfunc::regproc, castcontext
    FROM   pg_cast
    WHERE  castsource = 'bool'::regtype
    AND    casttarget = 'int'::regtype;
    

    結果:

    castsource  casttarget  castfunc         castcontext
    boolean     integer     pg_catalog.int4  e
    

    関連:

    castcontextを変更する必要があります それを機能させるために-あなたはできる スーパーユーザーとして実行します。このエキゾチックマニューバには「ALTERCAST」ステートメントはありません。UPDATEする必要があります 直接。いいね:

    UPDATE pg_cast
    SET    castcontext = 'a'
    WHERE  castsource = 'bool'::regtype
    AND    casttarget = 'int'::regtype;
    

    ただし 、各キャストの事前定義されたキャストコンテキストには正当な理由があります。システムカタログの改ざんは、簡​​単に行うべきことではありません。この特定のケースでは、Postgresが一致するキャストを選択する必要があるときに意思決定のバランスが崩れる可能性があります。オーバーロードされた関数のセットから選択するのと同じように...

    integer -> booleanの同様の手順 、int2 -> booleanboolean -> int2 、など。



    1. Bea WeblogicWorkFolderはどこにありますか

    2. フィルター処理されたインデックスと強制パラメーター化(redux)

    3. PostgreSQLでのPi()のしくみ

    4. テーブルを更新するときに読み取りを防止する