【问题标题】:postgresql searching by string arraypostgresql 按字符串数组搜索
【发布时间】:2022-11-24 06:33:33
【问题描述】:

我们有一个表,其中一列(varchar)包含由空格分隔的字符串,如下所示

A.Y A.P F.K
AC.YZ AB.YY
Ap.YZ BC.YZ

我想用A.P A.Y F.K 搜索,结果应该返回第一行。

我正在尝试找到一种按空间拆分和排序的方法,并将结果数组与输入进行比较,输入也以相同的方式拆分后排序。

有一个函数 string_to_array(<input/column>, ' ') 可用于拆分但找不到任何方法来对生成的字符串数组进行排序。任何想法?

【问题讨论】:

    标签: sql arrays postgresql csv


    【解决方案1】:

    不需要对数组进行排序,可以使用contains运算符@>

    where string_to_array(the_column, ' ') @> array['A.P', 'F.K', 'A.Y']
    

    这返回行包含右侧的数组,即该列可能包含其他元素。例如A.P A.Z A.Y F.K 也会匹配。

    如果你想找到包含的行确切地对于这三个元素,您可以在两个方向上使用 contains 运算符:

    where string_to_array(the_column, ' ') @> array['A.P', 'F.K', 'A.Y']
      and string_to_array(the_column, ' ') <@ array['A.P', 'F.K', 'A.Y']
    

    【讨论】:

      猜你喜欢
      • 2020-03-25
      • 2014-10-06
      • 2012-01-13
      • 1970-01-01
      • 1970-01-01
      • 2013-04-11
      • 1970-01-01
      • 2011-06-03
      相关资源
      最近更新 更多