我有个问题。我正在使用 Postgrs 数据库,我的问题是我需要将整数用作文本。我有以下解决方案:
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';
Run Code Online (Sandbox Code Playgroud)
我一直在读这个解决方案是不正确的,它可能会在未来引起一些问题。所以我一直在通过互联网进行研究,我看到有些人只使用CAST,但只是为了转换特定的int,即https://dba.stackexchange.com/questions/82511/how-to-enable-implicit -casts-in-postgresql-9-2
Lau*_*lbe 14
创建这样的隐式强制转换的危险在于它会破坏 PostgreSQL 中精心平衡的类型系统;之后,一些重载函数的无辜调用将停止工作,因为由于强制转换,突然有太多候选函数无法做出唯一选择。
使用显式转换要好得多:
CAST (intcol AS text)
Run Code Online (Sandbox Code Playgroud)
这是标准的 SQL,应该可以在任何地方使用。
归档时间: |
|
查看次数: |
15539 次 |
最近记录: |