2014-11-20 26 views
5

Chcę zwrócić 1, jeśli pewna liczba już istnieje w tabeli, a 0 w przeciwnym razie.Zwróć 1, jeśli numer istnieje w tabeli, a 0 w przeciwnym razie

Próbowałem coś, ale to nie działa:

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

Chcę coś podobnego istnieje funkcja, która już istnieje w PostgreSQL, ale zamiast true i false Chcę 1 lub 0.

+0

Znalazłem odpowiedź: http://stackoverflow.com/questions/18309293/how-can-i-return-0-from-query-in-pgsql-if-the-row-doesnt-istnieć – thecoparyew

Odpowiedz

3

EXISTS daje wynik boolean.
Prosty sposób, aby osiągnąć to, co prosicie jest obsady roku wynik na integer:

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

TRUE jest 1.
FALSE to 0.

1

Jeśli pole testujesz jest kluczem podstawowym (lub jakiś inny UNIQUE), to możesz po prostu odesłać count (który zawsze będzie mieć wartość 0 lub 1):

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