减去2个hstore,您可能需要添加显式类型转换

时间:2013-09-05 13:27:58

标签: postgresql post postgresql-9.1 psql

postgres的文档有hstore - hstore,它从左操作数中删除匹配对。已安装postgres扩展程序。

当我尝试

select public.hstore('"x"=>"30", "y"=>"c"') - 
       public.hstore('"x"=>"30","y"=>"fred"')

错误地跟随

ERROR:  operator does not exist: public.hstore - public.hstore
LINE 3:  select public.hstore('"x"=>"30", "y"=>"c"') - public.hstore...
                                                     ^
HINT:  No operator matches the given name and argument type(s). You might need to add explicit type casts.

2 个答案:

答案 0 :(得分:5)

您已将hstore扩展程序安装到public架构中,该架构不在search_path上。要查找类型,您需要对其进行架构验证,但您不符合适用于这些类型的- 运算符

这意味着找不到hstore的运算符定义。你必须:

  • 使用OPERATOR(public.-);
  • 对运营商进行架构限定
  • public放在search_path上;或
  • 卸载hstore,然后将其安装到search_path 的专用架构中。

模式限定的运算符语法的示例是:

SELECT 1 OPERATOR(pg_catalog.-) 2;

答案 1 :(得分:0)

我也遇到了这个问题,从我的代码中找不到任何东西(通过pgadmin - query工作)。最后,在查看公共场所的功能后,我发现这对我有用。

public.fetchval(hstore, key)