2016-06-12 17 views
0

MySQL用に設計されたSQLクエリをPostgresの構文に変換できません。これはクエリです:PostgresのIF-ELSE

select if(sendonly = true, 'REJECT', 'OK') AS access from accounts where username = '%u' and domain = '%d' and enabled = true LIMIT 1; 

この素敵な機能 "if()"はPostgreSQLで利用できません。いくつかのCASE句での私の最初の試みは失敗しました。 Postgresでこのクエリを実行するためには、何を変更する必要がありますか?

+1

を、あなたはいずれかを実行しました研究?グーグルの "postgres else if"はhttps://www.postgresql.org/docs/9.1/static/plpgsql-control-structures.htmlを明らかにする。これはIF-THEN-ELSE構造があることを示している。 – ceejayoz

+1

@ceejayozページをもう少し見てみると、それはSQLクエリではなく、サーバー側のPL/pgSQL言語です。 –

答えて

2

あなたが述べたように、あなたはcase表現を使用できます。

SELECT CASE WHEN sendonly = true THEN 'REJECT' ELSE 'OK' END AS access 
FROM accounts 
WHERE username = '%u' AND domain = '%d' AND enabled = true 
LIMIT 1; 

あるいは、Postgresは直接ブールを評価できるように、あなたは少しこのクエリをダウントリムできます

SELECT CASE WHEN sendonly THEN 'REJECT' ELSE 'OK' END AS access 
FROM accounts 
WHERE username = '%u' AND domain = '%d' AND enabled 
LIMIT 1;