我知道如何:
- Query JSON in Postgres
- How to query JSON data from postgresql in sqlalchemy
- how to use clojure.java.jdbc
但我不知道如何将它们组合在一起并使用 clojure.java.jdbc 查询 json。
比如我有一个表user,还有一个字段user_info
CREATE TABLE user (id SERIAL,user_info JSON);
然后我找到this blog实现一些协议(protocol),它插入成功!
(insert! conn :yxt_user {:user_info {:hello [1 "test" true]}})
但我不知道如何编写代码来查询它,就像来自 jdbc/query 的 sql
SELECT * FROM user WHERE data ? 'hello';
不是通过jdbc/execute直接写sql之类的
(jdbc/execute! db-spec ["UPDATE table SET col1 = NOW() WHERE id = ?" 77])
我试着写这个查询
(jdbc/query conn ["SELECT * FROM user WHERE user_info ? 'hello'"])
我明白了
org.postgresql.util.PSQLException: 未设定参数值 1 的内容。
然后我试了一下
(jdbc/query conn ["SELECT * FROM user WHERE user_info ? 'hello'" "?"])
我明白了
org.postgresql.util.PSQLException: ERROR: syntax error at or near "$1"
如何编写查询以过滤 user_info 具有 JSON 键 hello
的 JSON 列?
最佳答案
如果你有最新的 postgresql 驱动程序,你可以逃避 ?双 ??
这应该有效:
(jdbc/query conn ["SELECT * FROM user WHERE user_info ?? 'hello'"])
关于java - 如何使用 clojure.java.jdbc 从 postgresql 查询 JSON 数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30105452/