У меня есть таблица с содержимым, похожим на это:
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
Т.е., вариациями могут быть элементы, отличающиеся только несколькими символами или прописными буквами, и не имеет значения, какие из них остаются, пока они сгруппированы.