在谷歌云扳手中查询一个数组

Posted

技术标签:

【中文标题】在谷歌云扳手中查询一个数组【英文标题】:Query a Array in google cloud spanner 【发布时间】:2017-07-08 19:42:15 【问题描述】:

如何在 google cloud spanner 中查询数组?

我试过了

let query = 
    sql:`SELECT id, name, description FROM articles WHERE lang = '` + req.swagger.params.lang.value + `' AND tags ARRAY['` + req.swagger.params.tag.value + `']::varchar[]`
  ;

【问题讨论】:

【参考方案1】:

您需要隐式取消嵌套数组元素。举个例子

SELECT id, name, description
FROM articles as a, a.tags as single_tag
WHERE lang = "your lang value"
      AND single_tag = "your tag value"

首先,我将数组列 tags 隐式地取消嵌套到列 single_tag

其次,我将您的 where 子句更改为与新的 single_tag 列相等

注意:如果标签中的多个值符合您的条件,您可以多次返回同一行。只要您返回的列都不是数组或结构,您可以通过添加DISTINCT 子句来解决此问题。例如:

SELECT DISTINCT id, name, description
FROM articles as a, a.tags as single_tag
WHERE lang = "your lang value"
      AND single_tag = "your tag value"

【讨论】:

感谢您的回答,我在 5 分钟前就知道了 ;-) - 我认为 spanner 是 gcp 完美堆栈的缺失环节!我喜欢它!!感谢您的出色工作!

以上是关于在谷歌云扳手中查询一个数组的主要内容,如果未能解决你的问题,请参考以下文章

如何在谷歌云数据流中运行动态第二个查询?

Bigquery 如何使用存储在谷歌云中的数据?

如何以编程方式在谷歌云运行 api 中获取当前项目 ID

谷歌云构建:在谷歌云存储库上克隆私有存储库失败

在谷歌云上创建集群

在谷歌云平台部署python脚本