【问题标题】: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']