2016-12-27 19 views
0

我正在尝试使用新的箱子数据库。 link 我有一个包含“基础设施”和“网络”对象的表:如何从SQL对象查询项目(CRATE DB)

CREATE TABLE servers (infrastructure object(strict) as (
       #etc... 
       os_name string, 
       #etc... 
       network array(object as 
       (etc.., hosting_id string, etc...)) 

我需要从网络阵列“基础设施”和hosting_id日OS_NAME查询。我怎么做?我试图谷歌找到正确的语法,但没有成功。我想是这样的:

SELECT * FROM servers WHERE infrastructure[os_name] = "some value" 

SELECT * FROM servers WHERE infrastructure["network"]["hosting_id"] = "some value" 
+0

切勿将多个值存储在单个列中。更好地改变你的餐桌设计 –

+0

这是'MySQL' ......从来没有见过这样的语法。可能我错过了一些 – Rahul

+0

对不起。这不是Mysql,但它使用sql语言。 https://crate.io/ – Vasile

回答

2

ANY()是你的朋友,但是要注意,它不与对象数组。所以你还需要考虑this information。下面的解决方案适用于最新的Crate版本1.0.1:

SELECT * FROM servers 
WHERE 
    os_name = 'some value' 
AND 
    'some value' = ANY(network['hosting_id']);