根据TFM(Postgres docs),您使用常规连接运算符来连接两个HSTORE:
SELECT 'a=>b, c=>d'::hstore || 'c=>x, d=>q'::hstore
结果:
"a"=>"b", "c"=>"x", "d"=>"q"
但是,我在运行完全相同的命令时遇到错误:
[42883] ERROR: operator does not exist: hstore || hstore Hint: No operator matches the given name and argument type(s). You might need to add explicit type casts.
我能得到理想结果的唯一方法就是做一些如此hackish让我想哭的东西:先将我拥有的任何HSTORE转换成文本,然后连接文本并转换回HSTORE。当然,这并不是很好,因为文档还说明如果有重复的密钥,那么就不能保证哪一个密钥能够存在。
在我向Postgres人员提交错误之前,还有其他人可以复制这个吗?版本信息:
select version();
PostgreSQL 9.4.5 on x86_64-unknown-linux-gnu, compiled by gcc (Debian 4.7.2-5) 4.7.2, 64-bit
select extname,extversion from pg_catalog.pg_extension;
hstore 1.3
答案 0 :(得分:0)
找出问题所在。 HSTORE扩展安装在单独的模式中;我能够通过识别它来调用该模式(sys.hstore),但它仍然不喜欢运算符||。修复实际上非常简单:我将sys添加到search_path。