Моя схема выглядит так:
create table mytable
(
id integer not null,
value json not null
);
И столбец value
содержит смешанные данные, как JSON, так и логические значения, подобные этому:
id | value
----------
1 | {"key1": 1, "key2": 2}
2 | false
3 | {"key2": 3}
4 | true
Эти смешанные значения хорошо принимаются PostgreSQL.
Теперь я хочу выбрать все строки, которые либо содержат некоторые данные json, либо true
. То есть Я хочу выбрать строки 1, 3 и 4.
Вот SQL-запрос, который я мог бы придумать:
SELECT mytable.value
FROM mytable
WHERE CAST(CAST(mytable.value AS TEXT) AS BOOLEAN) IS NOT false;
Но с этим сообщением ничего не получается:
ERROR: argument of IS NOT FALSE must be type boolean, not type json