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

Postgres9.1+関数で整数と数値の混合引数を使用する方法

    現時点では、ポリモーフィック型は厳密です-他の場合、PostgreSQLは定数を最も一般的な型にキャストしようとしますが、ポリモーフィック型にはこの手順がありません-この場合、問題を説明したときに、明示的にキャストするか、ポリモーフィック型を使用しないでください。プランBは関数のオーバーロードを超えています 。

    CREATE OR REPLACE FUNCTION public.icase1(cond1 boolean,
                                             res1 integer, conddefault integer)
    RETURNS integer AS $$
    SELECT CASE WHEN $1 THEN $2 ELSE $3 END;
    $$ LANGUAGE sql;
    
    CREATE OR REPLACE FUNCTION public.icase1(cond1 boolean,
                                             res1 numeric, conddefault numeric)
    RETURNS numeric AS $$
    SELECT CASE WHEN $1 THEN $2 ELSE $3 END;
    $$ LANGUAGE sql;
    

    その後、コードは期待どおりに機能します:

    postgres=> select icase1(true, 1.0, 0);
     icase1 
    --------
        1.0
    (1 row)
    
    postgres=> select icase1(true, 1.0, 1.0);
     icase1 
    --------
        1.0
    (1 row)
    
    postgres=> select icase1(true, 1, 0);
     icase1 
    --------
          1
    (1 row)
    



    1. smallintとcharacter(10)のどちらがより効率的ですか?

    2. Laravel:データベースに動的に接続する

    3. Oracleselect相互サブ文字列

    4. PostgreSQL:jsonオブジェクトを使用して配列からキーと値のペアを削除します