是否可以查询作为列表的元素?

时间:2016-04-29 00:41:54

标签: sql json amazon-redshift

我知道嵌入式JSON值在SQL和redshift中是可查询的。 (通过json_extract_path_text)等函数

但是有可能有一个嵌入的事物列表,然后查询?例如说我有这张桌子:

fruit   people_who_like_it
apples        {[Brian]}
oranges       {[Susan, Brian]}
bananas       {[Freddy]}

有没有办法构建一个查询来查找Brian喜欢的所有水果?

2 个答案:

答案 0 :(得分:0)

你试过了吗?

SELECT fruit
FROM yourTable
WHERE people_who_like_it LIKE '%Brian%';

这应该会给你任何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]”< - 前面的空格

“Brian,”< - 前面的空间

“[布赖恩,”

答案 1 :(得分:0)

如果您可以将该字符串转换为JSON字符串,则可以使用 JSON_EXTRACT_ARRAY_ELEMENT_TEXT函数:

https://docs.aws.amazon.com/redshift/latest/dg/JSON_EXTRACT_ARRAY_ELEMENT_TEXT.html