【问题标题】:Search data from JSON string stored in DB从存储在数据库中的 JSON 字符串中搜索数据
【发布时间】:2017-02-12 04:23:54
【问题描述】:

我有一个{"Name":[{"value":"First Name"}],"City":[{"value":"Delhi"},{"value":"London"]} varchar 值存储在 db 的列中。我需要使用 JPQL 搜索每个拥有德里市的人。将JSON字符串存储在db中好吗?

【问题讨论】:

  • 如果您想在搜索中使用该索引或列,最好坚持列(将其分隔为一行的列)
  • 你的数据库版本是什么?
  • 我无法将它分开,因为它需要大量的设计更改。数据库是 HSQL 2.3
  • 那么在这种情况下,通配符搜索可能会解决这个问题
  • 能否请您解释一下我是这项技术的新手。

标签: sql json jpql


【解决方案1】:

嗯,在大多数情况下,子字符串匹配可以为您工作,但它并不精确并且会很慢。

你可以试试这样的:

StringBuilder sb = new StringBuilder();
sb.append("SELECT table FROM Table table ");
sb.append("WHERE table.columnWithJson like '%\"City\":[%:city%]}' ");

Query q = em.createQuery(sb.toString())
q.setParameter("city", ""Delhi);

如果您正在使用一些支持正则表达式的数据库,并且不介意放弃 JPQL 并使用本机查询,那么这也是您的替代方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-22
    • 1970-01-01
    • 1970-01-01
    • 2016-06-13
    • 2012-02-17
    • 2015-01-30
    • 1970-01-01
    相关资源
    最近更新 更多