3

Web アプリで次の SQL クエリを実行しています。

SELECT EXISTS (
SELECT id
FROM user
WHERE membership=1244)

結果としてtrue (ブール値データ)を期待していましたが、false に対して 't' または 'f' を取得しています。私のluaコードに標準のブール値を返すにはどうすればよいですか?

次の投稿を見つけました。

PHP で Postgres からブール値を正しく読み取る

そこで、コードを次のように変更しようとしました。

SELECT EXISTS ::int (
SELECT id
FROM user
WHERE membership=1244)

また

SELECT ::INT (SELECT EXISTS (
SELECT id
FROM user
WHERE membership=1244))

しかし、構文エラーが発生します。
これを処理する最善の方法を教えてもらえますか? 結果の「t」を何らかの形でブール値にキャストする必要がありますか? または、't'/'f' の代わりに true / false を返すように postgresql に指示する方法はありますか?

ありがとう。

4

4 に答える 4

4

で試してみてくださいCASE

select       
  (case when exists (SELECT id FROM user WHERE membership = 1244)
    then 1 
    else 0 
  end) as column;

私のテストフィドル

于 2013-07-23T14:30:26.613 に答える
0

最初のクエリはそれ自体で問題ありません。

SELECT id FROM user WHERE membership=1244

行が返されるかどうかを確認するだけです。

于 2013-07-23T17:40:11.993 に答える