【问题标题】: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 喜欢的所有水果?

【问题讨论】:

    标签: sql json amazon-redshift


    【解决方案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

    【讨论】:

      猜你喜欢
      • 2021-11-24
      • 1970-01-01
      • 2015-09-25
      • 2015-04-25
      • 1970-01-01
      • 2016-08-24
      • 2019-09-26
      • 2014-01-07
      • 1970-01-01
      相关资源
      最近更新 更多