Тип smallint литье в boolean в PostgreSQL
я пытаюсь привести smallint к логическому значению в PostgreSQL. Это не работает из коробки, например:
select (1::smallint)::bool;
возвращает "ERROR: 42846: не удается привести тип smallint к boolean"
я могу исправить это с помощью:
select (1::smallint)::int::bool;
но мне интересно, есть ли способ, которым я могу определить, как бросить smallint
на boolean
?
причина этого в том, что у меня (и других, с которыми я работаю) есть сводные запросы, которые бросают int
столбец из таблицы базы данных boolean
. Я хотел бы изменить этот столбец smallint
, но это остановило бы эту логику, потому что нет прямого броска из smallint
to boolean
. Можно ли использовать postgres CREATE CAST
чтобы определить, как бросить smallint
до boolean
?
1 ответов
CREATE OR REPLACE FUNCTION boolean1(i smallint) RETURNS boolean AS $$
BEGIN
RETURN (i::smallint)::int::bool;
END;
$$ LANGUAGE plpgsql;
CREATE CAST (smallint AS boolean) WITH FUNCTION boolean1(smallint) AS ASSIGNMENT;