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

where句でIf条件を使用する

    select * from sampleTable
    where 
      case when @taxtype = 'P' then
        (taxtype = 'P' or  (taxtype = 'E' and code in ('MER','SER')))
      Else
        (taxtype = 'E' and code not in ('MER','SER'))
      end
    

    次のようになります これはPostresで機能します

    編集:

    要旨は機能するが、Postgresには変数の概念がありません 他のRDBMSと同じように、これを次のように書き直しました

    WITH myconstants as (SELECT 'P'::text as vtaxtype)
    
    select * from sampleTable
    where 
      case when (select vTaxType from myconstants) = 'P' then
        (taxtype = 'P' or  (taxtype = 'E' and code in ('MER','SER')))
      Else
        (taxtype = 'E' and code not in ('MER','SER'))
      end;
    

    これが SQLFiddle です。 それを示す



    1. linuxmysql-serverがmysql_configを見つけることができません

    2. ドロップしてもテーブルはまだ存在します

    3. postgresqlhibernateでuserという名前のテーブルを使用できません

    4. Postgres 9.5 ON CONFLICT DO SELECT