Postgres конвертирует целое число в текст - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть вопрос. Я использую базу данных Postgrs, и моя проблема в том, что мне нужно использовать int как текст. У меня есть следующее решение:

CREATE FUNCTION pg_catalog.text(integer) RETURNS text STRICT IMMUTABLE LANGUAGE SQL AS 'SELECT textin(int4out($1));';

CREATE CAST (integer AS text) WITH FUNCTION pg_catalog.text(integer) AS IMPLICIT;

COMMENT ON FUNCTION pg_catalog.text(integer) IS 'convert integer to text';

Я читал, что это решение не является правильным, оно может вызвать некоторые проблемы в будущем. Итак, я проводил исследование через Интернет и увидел, что некоторые люди используют только CAST, но только для преобразования определенного int, то есть https://dba.stackexchange.com/questions/82511/how-to-enable-implicit-casts-in-postgresql-9-2

1 Ответ

0 голосов
/ 25 апреля 2018

Опасность создания такого неявного приведения заключается в том, что он дестабилизирует тщательно сбалансированную систему типов в PostgreSQL; после этого некоторые невинные вызовы перегруженных функций перестанут работать, потому что из-за приведения внезапно появляется слишком много функций-кандидатов, чтобы сделать уникальный выбор.

Гораздо лучше использовать явное приведение:

CAST (intcol AS text)

Это стандартный SQL и должен работать везде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...