postgresql 筛选Postgres array_to_string()子查询select中的特定值

ffscu2ro  于 2023-05-28  发布在  PostgreSQL
关注(0)|答案(1)|浏览(95)

我没有在SO上找到这个问题的答案:
1.我有一个名为hashtags的列,其中包含字符串数组(例如{'tree', 'house'}
1.我想在选择中包含此列,方法是将数组值连接到一个字符串,并使用;作为分隔符-我使用array_to_string()函数
1.我想过滤掉这个array_to_string()-Concatenation中的一个特定值
我发现的都是复杂的子查询,数组比较等。- 理想情况下,我需要一个一行。

rmbxnbpk

rmbxnbpk1#

要过滤掉特定值,请在嵌套子查询中使用unnest(),并使用WHERE过滤值:

SELECT 
    t1.guid,
    array_to_string(
        (ARRAY(
            SELECT e AS hashtag 
            FROM UNNEST(t1.hashtags) AS a(e)
            WHERE e != 'house')), 
        ';') AS "tags"
FROM public.mytable AS t1

拆开:

  1. SELECT ... FROM unnest(t1.hashtags)-取消嵌套数组值的子查询
    1.给予这个子查询命名为e,并使用WHERE e != 'house')过滤掉值(将产生除house之外的所有值)
  2. (ARRAY())将过滤后的值组合回数组。注意外面的括号。
    1.应用array_to_string()连接值

相关问题