Как насчет использования оператора case
?
(case when hazardous then 'Bad juju' else 'Ok.' end) as safety
Вы также можете использовать оператор cast
:
postgres=# select cast(1 as boolean);
bool
------
t
postgres=# select cast(0 as boolean);
bool
------
f
postgres=# select cast('false' as boolean);
bool
------
f
postgres=# select cast('False' as boolean);
bool
------
f
postgres=# select cast('T' as boolean);
bool
------
t
postgres=# select cast('F' as boolean);
bool
------
f
postgres=# select cast('Y' as boolean);
bool
------
t
postgres=# select cast('N' as boolean);
bool
------
f
Так может быть:
select ... where ... and hazardous = cast(:your_variable as bool)
Вы также можете привести к varchar:
select cast(hazardous to varchar)...
Некоторые реализации драйверов баз данных (например, BDE от Borland) подавляют это, поскольку ожидают явной ширины столбца для полей varchar.
, если вы просто фильтруете для hazardous=true
, используйте просто «И опасный».