drug95107 2015-09-18 23:27
浏览 142
已采纳

Golang SQL包jsonb运算符

In sql package for postgresql jsonb how can I use the @> operator with a string query for example

  • WHERE data @> '{"stringdata": $1}' or
  • WHERE data @> '{"stringdata": "$1"}' doesn’t work

The alternative is data->>'string_data' = $1 which I don’t prefer for multiple statements

Error is:

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

1条回答 默认 最新

  • duanjiu6697 2015-09-19 17:47
    关注

    AFAIK, you can't interpolate inside strings, but you can build a JSON object using json_build_object or json_object:

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

    This is basically an equivalent of

    SELECT data FROM test
    WHERE data @> '{"stringdata":"$1","foo":$2}';
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器