是否有可能查询列表中的元素?
问题描述:
我知道嵌入的JSON值可以在SQL和红移中查询。 (通过像json_extract_path_text
这样的函数)是否有可能查询列表中的元素?
但是有可能拥有一个嵌入的事物列表,然后查询它吗?例如说我有这个表:
fruit people_who_like_it
apples {[Brian]}
oranges {[Susan, Brian]}
bananas {[Freddy]}
有没有一种方法来构造查询发现,布赖恩喜欢所有的水果?
答
你试过:
SELECT fruit
FROM yourTable
WHERE people_who_like_it LIKE '%Brian%';
这应该给你,布莱恩喜欢的任何水果。
UPDATE:
为了得到结果为布赖恩精确匹配,如在评论中指出,你可以尝试:
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,%';
有四种可能性,布莱恩的精确匹配可能看起来像包括:
“[布赖恩]”
“布赖恩]” < --preceding空间
“布赖恩,” < --preceding空间
“[布赖恩,”
答
如果你能说字符串转换成JSON字符串比你可以使用 JSON_EXTRACT_ARRAY_ELEMENT_TEXT功能:
https://docs.aws.amazon.com/redshift/latest/dg/JSON_EXTRACT_ARRAY_ELEMENT_TEXT.html
嗯,这将适用于这个例子,所以+1。尽管如果例如一个人被命名为'Cooper',另一个'Coop'会被打破。 –