Postgres:将TEXT转换为字符串或者' abc'与' a' || ' BC'

时间:2015-07-27 08:51:20

标签: postgresql postgresql-9.4

我不明白Postgres中String和Text之间的区别。我想从具有此函数的表中获取估计的行数

 SELECT reltuples::bigint AS estimate
 FROM   pg_class
 WHERE  oid = to_regclass('schema.tablename');

这样可行,但是这将从其他可能不知道当前模式的代码中调用 - 所以我想使用current_schema()函数。

如果我将代码更改为

SELECT reltuples::bigint AS estimate
FROM   pg_class
WHERE  oid = to_regclass(current_schema() || '.tablename');

我收到以下错误:

[42883] ERROR: function to_regclass(text) does not exist Hinweis: No function matches the given name and argument types. You might need to add explicit type casts. Position: 67

即使我尝试使用to_regclass('schema' || '.transactions');,我也会遇到同样的错误。

我如何投射" ||"的结果?串?没有"字符串" CAST的数据类型(... TO字符串)以及'schema.tablename''schema' || '.tablename'之间的区别是什么?

1 个答案:

答案 0 :(得分:2)

借助freenode上的postgresql聊天找到了解决方案:

SELECT reltuples::bigint AS estimate
FROM   pg_class
WHERE  oid = to_regclass((current_schema() || '.table')::cstring);