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

パラメータが「NOTPASSED」の場合に「where」句の列を回避する方法postgresql

    合格の意味が明確ではありません 、しかし多分あなたはそれを意味します$3 はオプションのパラメータで、$3 意味がない:気にしない

    SELECT *
    FROM employee
    WHERE name = $1
    AND age = $2
    AND ( $3 IS NULL OR salary = $3)
       ;
    

    一部のデータ:

    CREATE TABLE employee
            ( name varchar NOT NULL PRIMARY KEY
            , age integer
            , salary integer
            );
    
    INSERT INTO employee ( name , age , salary ) VALUES
     ( 'Alice' , 13 , 3 )
    ,( 'Bob' , 11 , 5 )
    ,( 'Charlotte' , 15 , 9 )
    ,( 'David' , 17 , 10 )
            ;
    

    準備されたクエリと同じ:

    PREPARE qry (text, integer , integer) AS
    SELECT *
    FROM employee
    WHERE name = $1
    AND age = $2
    AND ( $3 IS NULL OR salary = $3)
       ;
    
        -- and call the prepared statement:
    EXECUTE qry ('Alice', 13, 3);
    EXECUTE qry ('Alice', 13, NULL);
    

    出力:

    CREATE TABLE
    INSERT 0 4
    PREPARE
     name  | age | salary 
    -------+-----+--------
     Alice |  13 |      3
    (1 row)
    
     name  | age | salary 
    -------+-----+--------
     Alice |  13 |      3
    (1 row)
    


    1. Microsoft SQL Server2008R2のインデックスの自動インクリメント

    2. MavenGAEプラグイン+GoogleCloudSQLのエラー

    3. plpgsql関数の引数としてテーブル名と列名を定義しますか?

    4. R12.2のデータモデルの論理ビュー