在字符串PostgreSQL中查找匹配项

时间:2017-06-20 05:08:13

标签: sql postgresql

我有一个包含数千条记录的表per_1

我正在寻找的是做一个从右到左的SELECT匹配最相似的数字,无论它们是否在每个字符串的末尾都处于混乱状态,我使用喜欢''因为它会与我正在寻找的完全相反。

表per_1

id permutation

1 00021478200123456789

2 14782297690213564987

3 02897452205987425631

最后9个数字是相同的,只有它们是无序的,我需要一个查询,精确地返回那3列或所有类似的,最后包含123456789,无论它们在每个末尾的顺序如何链

我不需要LIKE''因为它会返回完全相同的行,而我所寻找的是最相似的终止,而不是确切的终止。

我在Windows 10中有一个Postgresql 9.4

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您可以将该字符串拆分为字符数组并进行比较。

Select Permutation
From per_1
Where regexp_split_to_array(permutation, '') @> regexp_split_to_array('45022003', '')

如果使用表达式

创建GIN / GiST索引,则可以加快速度
create index per_1_split_idx ON per_1 USING gin(regexp_split_to_array(permutation, ''));