2014-11-20 12 views
5

Voglio restituire 1 se un numero esiste già nella tabella e 0 in caso contrario.Restituisce 1 se il numero esiste nella tabella e 0 altrimenti

ho provato qualcosa, ma non funziona:

select 
case when 100 in (select distinct id from test) then '1' 
else '0' 
from test 

Voglio qualcosa di simile a esiste funzione che già esiste in PostgreSQL, ma invece di true e false voglio 1 o 0.

+0

ho trovato la risposta: http://stackoverflow.com/questions/18309293/how-can-i-return-0-from-query-in-pgsql-if-the-row-doesnt-exist – thecoparyew

risposta

3

EXISTS restituisce un risultato boolean.
Il modo più semplice per ottenere quello che stai chiedendo è di fusione il risultato integer:

SELECT (EXISTS (SELECT 1 FROM test WHERE id = 100))::int; 

TRUE è 1.
FALSE è 0.

1

Se il campo si sta testando è la chiave primaria (o qualche altro vincolo unico), allora si può semplicemente restituire il conteggio (che sarà sempre 0 o 1):

SELECT count(*) FROM test WHERE id = 100; 
Problemi correlati