使用查询在db中调用json数组数据

时间:2019-03-14 17:00:36

标签: sql ruby-on-rails database sqlite

我有一个数据库,其值如下:img我可以在属性列(行值为“ listing”)中调用listing_id(23,27 .... so on)的json值吗?使用一个查询,我会 非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

如果已安装JSON extension,可以使用json_each。这是一个table_valued_function,因此它被视为表。

您可能想在sqlite浏览器中执行SELECT * from ahoy_events,json_each(properties)来了解数据。

类似的东西:

SELECT value as listing
from ahoy_events,json_each(properties)
where key = 'listing_id'

应列出ID(值)

[编辑]

如果JSON扩展名不可用,则可以尝试使用SQLite core functions substrinstrlength

可以在:}之间看到属性列的值部分。 :在位置instr(properties,':')上。

substr(properties,instr(properties,':') + 1,length(properties)-instr(properties,':') - 1)

在文档中,“ substr(X,Y,Z)函数返回输入字符串X的子字符串,该子字符串以第Y个字符开头,长度为Z个字符。'

Y为instr(properties,':') + 1,即:之后的字符。 Z是length(properties)-instr(properties,':') - 1)

您可以在SELECT或WHERE中使用substr

另一种想法:如果properties列始终是单值的(如数据似乎显示的那样),仅将“值”插入数据库的属性列中难道不是很容易吗?或添加新的listing_id列。该方法适用于如图所示的结构化数据,但我不知道生产数据的结构方式。