是否可以查询列表元素?
Posted
技术标签:
【中文标题】是否可以查询列表元素?【英文标题】:Is it possible to query against an element that is a list? 【发布时间】:2016-04-29 00:41:54 【问题描述】:我知道嵌入式 JSON 值可以在 SQL 和 redshift 中查询。 (通过json_extract_path_text
等函数)
但是是否有可能有一个嵌入的事物列表,然后对其进行查询?例如假设我有这张桌子:
fruit people_who_like_it
apples [Brian]
oranges [Susan, Brian]
bananas [Freddy]
有没有办法构造一个查询来查找 Brian 喜欢的所有水果?
【问题讨论】:
【参考方案1】:你试过了吗:
SELECT fruit
FROM yourTable
WHERE people_who_like_it LIKE '%Brian%';
这应该会给你布赖恩喜欢的任何水果。
更新:
要获得与 Brian 完全匹配的结果,正如评论中指出的,您可以尝试:
SELECT fruit
FROM yourTable
WHERE people_who_like_it LIKE '%[Brian]%'
OR people_who_like_it LIKE '% Brian]%'
OR people_who_like_it LIKE '% Brian,%'
OR people_who_like_it LIKE '%[Brian,%';
Brian 的完全匹配有四种可能性,包括:
“[布赖恩]”
"Brian]"
“布赖恩”,
“[布赖恩”,
【讨论】:
嗯,这适用于这个例子,所以 +1。虽然如果例如一个人被命名为“库珀”,另一个人被命名为“库珀”。【参考方案2】:如果您可以将该字符串转换为 JSON 字符串,那么您可以使用 JSON_EXTRACT_ARRAY_ELEMENT_TEXT 函数:
https://docs.aws.amazon.com/redshift/latest/dg/JSON_EXTRACT_ARRAY_ELEMENT_TEXT.html
【讨论】:
以上是关于是否可以查询列表元素?的主要内容,如果未能解决你的问题,请参考以下文章