Postgres将整数转换为文本

时间:2018-04-25 15:11:10

标签: postgresql

我有一个问题。我正在使用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 :(得分:1)

创建隐式转换的危险在于它会破坏PostgreSQL中精心平衡的类型系统;之后,一些无谓的重载函数调用将停止工作,因为由于演员阵容,突然有太多的候选函数做出独特的选择。

使用显式强制转换要好得多:

CAST (intcol AS text)

这是标准的SQL,应该可以在任何地方使用。