【问题标题】:How to use LIKE with ANY in Postgresql?如何在 Postgresql 中使用 LIKE 和 ANY?
【发布时间】:2014-12-15 19:00:54
【问题描述】:

有没有办法对 postgres 中的字符串数组列进行部分字符串匹配?

我正在尝试以下语法,但它没有像我预期的那样工作:

SELECT * FROM example_table WHERE '%partial string' ILIKE ANY(array_column)

有正确的方法吗?

【问题讨论】:

    标签: sql postgresql postgresql-9.2


    【解决方案1】:
    drop table if exists temp_a;
    create temp table temp_a as
    (
        select array['alpha','beta'] as strings
        union all
        select array['gamma','theta']
    );
    
    select * 
    from (select unnest(strings) as string from temp_a) as sq 
    where string ilike '%eta'
    

    【讨论】:

      【解决方案2】:

      您需要分别搜索每个下标——这是一个可以解释为包含更多列的示例

      SELECT distinct array_column FROM
         (SELECT array_column,
                 generate_subscripts(array_column, 1) AS s
            FROM example_table) AS foo
       WHERE array_column[s] like '%partial string';
      

      另类破解:

      select * from example_table where array_column::text like '%partial%'
      

      如有必要,您可以修改“部分”以包含左/右括号和引号以更精确。

      【讨论】:

        【解决方案3】:

        刚刚使用array_to_string实现了这个:

        SELECT * FROM example_table WHERE array_to_string(array_column) ILIKE '%partial string'
        

        【讨论】:

          猜你喜欢
          • 2015-09-05
          • 1970-01-01
          • 2013-05-27
          • 2019-07-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多