我不明白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'
之间的区别是什么?
答案 0 :(得分:2)
借助freenode上的postgresql聊天找到了解决方案:
SELECT reltuples::bigint AS estimate
FROM pg_class
WHERE oid = to_regclass((current_schema() || '.table')::cstring);