是否可以查询列表元素?

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

【讨论】:

以上是关于是否可以查询列表元素?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以将元素附加到 JavaScript 节点列表?

查找某个元素class列表是否包含指定class

Python 统计列表里面有多少个元素

使用Prolog规则在查询中显示给定列表的第一个元素?

是否可以在详细视图中编辑 SwiftUI 列表元素?

python怎么获取list的某个元素的位置