我们有一个表,其中一列(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>, ' ')
可用于分割,但无法找到任何方法来排序结果字符串数组。任何想法?
您不需要对数组进行排序,您可以使用包含操作符@>
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']