次のような内容のテーブルがあります。
id | title
------------
1 | 5. foo
2 | 5.foo
3 | 5. foo*
4 | bar
5 | bar*
6 | baz
6 | BAZ
…等々。タイトルでグループ化し、余分なビットを無視したいと思います。私はPostgresがこれを行うことができることを知っています:
SELECT * FROM (
SELECT regexp_replace(title, '[*.]+$', '') AS title
FROM table
) AS a
GROUP BY title
ただし、これは非常に単純であり、考えられるすべてのバリエーションを予測しようとすると、非常に扱いにくくなります。問題は、正規表現を使用するよりもファジー グループ化を行うためのより一般的な方法があるかということです。少なくとも背中を壊すことなく、それは可能ですか?
編集: 明確にするために、どのバリエーションにも好みはありません。グループ化後のテーブルは次のようになります。
title
------
5. foo
bar
baz
つまり、バリエーションは数文字または大文字が異なるだけのアイテムであり、それらがグループ化されている限り、どれが残されていても問題ありません。