数组类型列上的Spanner数据库查询

问题描述 投票:0回答:1

我想编写一个选择查询来获取所有记录,但例如,如果我尝试将多种类型与数组类型列匹配,则会收到错误 以下查询有效

SELECT * FROM Car where ("Ford") IN UNNEST (cartype)

但是这个查询失败了

SELECT * FROM Car where (["Ford","Honda","Suzuki"]) IN UNNEST (cartype)

HTTPError 400: {"code":3, "message":"ARRAY 类型的 IN UNNEST 的第一个参数不支持相等比较 [at 1:42]\

google-cloud-spanner
1个回答
0
投票

从您的问题中尚不完全清楚您是否只希望给定值之一出现在

cartype
数组中,还是全部出现,但您可能需要以下函数之一:

  1. ARRAY_INCLUDES_ALL
    :如果第一个数组的所有数组元素都包含在第二个数组中,则此函数返回 true (https://cloud.google.com/spanner/docs/reference/standard-sql/array_functions#array_includes_all )
  2. ARRAY_INCLUDES_ANY
    :如果第一个数组的至少一个数组元素包含在第二个数组中,则此函数返回 true (https://cloud.google.com/spanner/docs/reference/standard-sql/array_functions #array_includes_any

假设您希望数组中至少包含一个,那么您的查询应如下所示:

SELECT *
FROM Car
where ARRAY_INCLUDES_ANY(cartype, ["Ford","Honda","Suzuki"])
© www.soinside.com 2019 - 2024. All rights reserved.