我想编写一个选择查询来获取所有记录,但例如,如果我尝试将多种类型与数组类型列匹配,则会收到错误 以下查询有效
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]\
从您的问题中尚不完全清楚您是否只希望给定值之一出现在
cartype
数组中,还是全部出现,但您可能需要以下函数之一:
ARRAY_INCLUDES_ALL
:如果第一个数组的所有数组元素都包含在第二个数组中,则此函数返回 true (https://cloud.google.com/spanner/docs/reference/standard-sql/array_functions#array_includes_all )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"])