2012-06-30 5 views
12

私はこれについて多くの投稿を見ました。しかし、私は答えを得ることができませんでした。 テーブルに特定の行が存在するかどうかを確認するクエリを実行します。存在する場合はの文字列が返され、そこで検索が停止され、falseでない場合は返されます。postgresqlに行が存在するかどうかを確認してください

+3

クエリで行方不明カンマがあります。 – wildplasser

+1

何を試しましたか?どのように行を指定しますか? ROWIDまたはすべての属性の値によってそれは問合せでなければならないのですか、それともPL/SQL関数でも受け入れられますか? – toniedzwiedz

答えて

35
select 
    case when exists (select true from table_name where table_column=?) 
    then 'true' 
    else 'false' 
    end; 

しかし、単なる文字列ではなくブール値を返す方が良いでしょう:

select exists (select true from table_name where table_column=?); 
-11

スポイラー:

-- EXPLAIN ANALYZE 
WITH magic AS (
     WITH lousy AS (SELECT * FROM one WHERE num = -1) 
     SELECT 'True'::text AS truth 
     WHERE EXISTS (SELECT * FROM lousy) 
     UNION ALL 
     SELECT 'False'::text AS truth 
     WHERE NOT EXISTS (SELECT * FROM lousy) 
     ) 
SELECT * 
FROM magic 
     ; 
+1

これはあまりにも複雑です。 – Tometzky

+0

スポイラーとして意図されていました。 OPは間違いなく宿題であり、何の努力もしていない。 – wildplasser

+8

あなたが書いたことは、私にとってさえも不器用です。あなたは、[The Daily WTF](http://thedailywtf.com/)にふさわしい意図的に難読化された例を教えてはいけません。たとえば、 'case'と' exists'のドキュメントを指し示すことができます。これは、何を探すべきかを知っている誰かのためだけに役立ちます。 – Tometzky

関連する問題