Может ли postgres (SQL) вычислить, насколько похожи две строки?

#sql #postgresql

#sql #postgresql

Вопрос:

У меня есть две таблицы тегов, к которым необходимо присоединить несколько столбцов тегов, которые не являются точными (разные заглавные буквы, обработка разделителей, порядок и т. Д.)

Также существует множество разных полей, которые могут иметь значение null, и таблицы должны сравниваться только по ненулевым значениям.

Таблица 1

      tags1      |          tags2         | tags3 
---------------- ------------------------ -----------
 jhon, paul     | null                   | corn, jhon, bloke
 null           | horse, joke, bloke     | Aristoteli, JANEH fonda 
 

Таблица 2

      ids        |          names         | clasifiers2 
---------------- ------------------------ -----------
 Paul, Jhon     | null                   | corn, Jhon
 null           | Aristoteli, JANEH fonda| horse, joke, bloke
 

Да, это беспорядок.
Есть ли в SQL функция, которая возвращала бы индекс того, насколько близки две строки, и позволяла бы объединять две записи только для значений, отличных от null?

Комментарии:

1. postgresql.org/docs/current/fuzzystrmatch.html

2. Часть объединения по-прежнему остается проблемой, потому что у меня нет фактического идентификатора для слияния, но это дает мне часть, но если я выясню, как присоединиться к этому беспорядку, я могу фильтровать результаты по некоторому нечеткому соответствию

3. Пожалуйста, укажите желаемые результаты, а также, если у вас есть что-то, что вы пробовали, опубликуйте это вместе с полученными результатами.

Ответ №1:

Я написал функцию для этого для SQL Server. Вы можете переписать его для PG. Имя функции — F_INFORCE_BASIQUE, и вы найдете приведенный ниже код: https://sqlpro.developpez.com/cours/sql/comparaisons-motifs/#LVI Я предполагаю, что вы немного читаете по-французски.