Om allt du vill visa är den bokstavliga TRUE
eller FALSE
, kan du använda fallbeskrivningarna som du hade föreslagit. Eftersom PostgreSQL behandlar TRUE
, true
, yes
, on
, y
, t
och 1
som sant, jag skulle styra hur jag vill att utdata ska se ut.
Där klausul kan skrivas som:
select * from tablename where active
--or--
select * from tablename where active = true
(Min rekommendation är densamma som PostgreSQL - använd true)
När du väljer, även om det kan finnas tvekan om att använda fallsatserna, rekommenderar jag ändå att du gör det för att ha kontroll över din utdatasträng.
Din fråga skulle se ut så här:
select
case when active = TRUE then 'TRUE' else 'FALSE' end as active_status,
...other columns...
from tablename
where active = TRUE;
SQLFiddle-exempel:http://sqlfiddle.com/#!15/4764d/1
create table test (id int, fullname varchar(100), active boolean);
insert into test values (1, 'test1', FALSE), (2, 'test2', TRUE), (3, 'test3', TRUE);
select
id,
fullname,
case when active = TRUE then 'TRUE' else 'FALSE' end as active_status
from test;
| id | fullname | active_status |
|----|----------|---------------|
| 1 | test1 | FALSE |
| 2 | test2 | TRUE |
| 3 | test3 | TRUE |