Ако всичко, което искате да покажете, е литерала TRUE
или FALSE
, можете да използвате операторите за случай, както сте предложили. Тъй като PostgreSQL третира TRUE
, true
, yes
, on
, y
, t
и 1
като вярно, аз бих контролирал как бих искал да изглежда изходът.
Където клаузата може да бъде написана като:
select * from tablename where active
--or--
select * from tablename where active = true
(Моята препоръка е същата като PostgreSQL - използвайте true)
Когато избирате, въпреки че може да има колебание да използвате операторите case, все пак бих препоръчал да направите това, за да имате контрол върху литерала на изходния низ.
Вашата заявка ще изглежда така:
select
case when active = TRUE then 'TRUE' else 'FALSE' end as active_status,
...other columns...
from tablename
where active = TRUE;
Пример за SQLFiddle: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 |