2015-09-18 43 views
1

在SQL包PostgreSQL的jsonb我怎么可以使用@>运算符与字符串查询例如Golang SQL包jsonb操作

  • WHERE data @> '{"stringdata": $1}'
  • WHERE data @> '{"stringdata": "$1"}'不起作用

的替代是data->>'string_data' = $1,我不喜欢多种语句

错误是:

"Message": "invalid input syntax for type json", 
    "Detail": "Token \"$\" is invalid.”, 
    "Where": "JSON data, line 1: $...", 
    "Routine": "report_invalid_token" 
+0

等效您正在使用“聪明的报价“,这是行不通的。编写查询时使用纯文本编辑器,而不是文字处理器。请同时显示错误讯息的*确切文字*。 –

+0

@CraigRinger添加了错误信息。你能展示一个纯文本编辑器的例子吗?为什么不聪明的引号工作? – Thellimist

+0

显然这是一个问题编辑的工件,并且原始文本有基本的ASCII双引号(''') –

回答

1

AFAIK,你不能插字符串内,但你可以使用build a JSON objectjson_build_objectjson_object

SELECT data FROM test 
WHERE data @> json_build_object('stringdata', $1::text, 'foo', $2::int)::jsonb; 

这是基本的

SELECT data FROM test 
WHERE data @> '{"stringdata":"$1","foo":$2}'; 
+0

Coudl您提供的是具有多个键的json对象的示例以及 – Thellimist

+0

@Entei请参阅编辑。 –