postgresql Postgres将整数转换为文本

v8wbuo2f  于 11个月前  发布在  PostgreSQL
关注(0)|答案(2)|浏览(199)

我有一个问题。我使用的是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

hgb9j2n6

hgb9j2n61#

创建这样的隐式强制转换的危险在于,它会破坏PostgreSQL中精心平衡的类型系统;之后,一些重载函数的无辜调用将停止工作,因为由于强制转换,突然有太多的候选函数来做出唯一的选择。
最好使用显式类型转换:

CAST (intcol AS text)

字符串
这是标准的SQL,应该在任何地方都可以工作。

xtfmy6hx

xtfmy6hx2#

PostgreSQL有::操作符的转换的简写。
使用示例:

select 1 as "i am number", 1::text as "i am text";

字符串


的数据
您可以在任何列上使用它,只需将示例中的1替换为列名。
文件

相关问题