Solución:
Si todo lo que quieres mostrar es el literal TRUE
o FALSE
, puede utilizar las declaraciones de casos como había propuesto. Dado que PostgreSQL trata TRUE
, true
, yes
, on
, y
, t
y 1
como cierto, controlaría cómo me gustaría que se viera la salida.
Donde la cláusula se puede escribir como:
select * from tablename where active
--or--
select * from tablename where active = true
(Mi recomendación es la misma que PostgreSQL: use true)
Al seleccionar, aunque puede haber dudas sobre el uso de las declaraciones de casos, todavía recomendaría hacerlo para tener control sobre su literal de cadena de salida.
Su consulta se vería así:
select
case when active = TRUE then 'TRUE' else 'FALSE' end as active_status,
...other columns...
from tablename
where active = TRUE;
Ejemplo de 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 |
Un elenco simple para text
hará el trabajo (a menos que necesite ortografía en mayúsculas):
SELECT true::text AS t, false::text AS f;
t | f
------+-------
true | false
De lo contrario, la representación del texto depende de la biblioteca y el cliente que utilice para conectarse. JDBC, por ejemplo, representa boolean
valores como “verdadero” https://foroayuda.es/ “falso” de todos modos:
Violín SQL.
Te encantará este cambio en Postgres 9.5 (citando las notas de la versión):
Utilice el comportamiento de transmisión de asignaciones para conversiones de tipos de datos en asignaciones PL / pgSQL, en lugar de convertir hacia y desde texto (Tom Lane)
Este cambio causa conversiones de booleanos a cadenas para producir
true
ofalse
, not
of
. Las conversiones de otros tipos pueden tener éxito en más casos que antes; por ejemplo, asignar un valor numérico3.9
a una variable entera ahora se asignará4
en lugar de fallar. Si no se define una conversión de grado de asignación para los tipos de origen y destino particulares, PL / pgSQL recurrirá a su antiguo comportamiento de conversión de E / S.
El énfasis audaz es mío.