【问题标题】:Querying against a simple array stored as json查询存储为 json 的简单数组
【发布时间】:2015-05-19 08:53:14
【问题描述】:

如何检查一行是否存在存储在 json 列中的整数,如下所示
[3、7、11、9] 因为在该列中没有具有名称的结构化 json 对象,所以我不能使用语法 where obj->>'something' = 3。只是没有“东西”。

【问题讨论】:

  • 为什么不获取行的字符串表示,例如将用逗号分隔的元素显示为“3, 7, 11, 9”,然后在字符串中搜索给定元素?像 myString.indexOf("7") ?
  • 好的 - 这会起作用。但是这个过程不能使用索引(在 postgres 9.4 中可用)。我宁愿将来有办法使用索引。
  • 我在下面说的,将字符串拆分为数组,然后搜索给定的数组元素,不行吗?

标签: postgresql-json


【解决方案1】:

您可以获取行的字符串表示形式,例如将用逗号分隔的元素显示为“3、7、11、9”,然后使用 indexOf 方法在字符串中搜索给定元素,例如 myString.indexOf (“7”)。你也可以用逗号分割这个字符串,得到一个元素数组。然后你可以使用 Array.indexOf 来检查该元素是否存在于数组中。

举个例子:

var obj = [3, 7, 11, 9]
var strRepresentation = obj.toString();
var array = strRepresentation.split(',');

function elementExists(e)
{
   return e + " exists in the array? " + (array.indexOf(e.toString()) != -1).toString();
}

alert(elementExists(7)); //returns true
alert(elementExists(13)); //returns false

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-13
    • 1970-01-01
    • 2012-09-07
    • 1970-01-01
    • 2018-01-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多