0

是否可以在 voltDB 中有一个数组列或在 json 类型列中查询一个嵌套数组?

例如,是否可以进行查询:查找数组包含值的行。

换句话说

  1. 数组 [1,2,3,4]
  2. 数组 [2,3,4,5]
  3. 数组 [3,4,5,6]

查找数组包含 1 的位置返回第 01 行 查找数组包含的位置 3 返回行 01、02、03 查找数组包含的位置 5 返回 02、03

4

1 回答 1

1

虽然 VoltDB 中没有 Array 列类型,但这可以通过使用 JSON 来解决。例如,假设我们有以下表定义:

CREATE TABLE JSONDocContainer (
idCol BIGINT NOT NULL,
jsonDoc VARCHAR(2048) NOT NULL
);

PARTITION TABLE JSONDocContainer ON COLUMN idCol;

jsonDoc 的值如下:

{"Info": {"FirstName":"Dheeraj", "LastName":"Remella", "Grades":["A","B","B","C","A","F"]}}

然后您可以按如下方式运行查询:

select POSITION('["F",' IN FIELD(FIELD(JSONDOC, 'Info'), 'Grades')), 
POSITION(',"F",' IN FIELD(FIELD(JSONDOC, 'Info'), 'Grades')), 
POSITION(',"F"]' IN FIELD(FIELD(JSONDOC,'Info'), 'Grades')) 
from jsondoccontainer where idcol=2;

回报:

C1  C2  C3 
--- --- ---
  0   0  21

如果 C1 或 C2 或 C3 返回非零,则它存在。虽然这不像“列包含值”这样的语法那样优雅,但它会起作用。

于 2014-07-10T22:33:34.983 回答