Sql-запрос или фильтр django для строки
hello Мне нужен запрос, который ищет в базе данных и возвращает строку, имеющую наибольшее сходство от начального символа со значением. представьте, задана строка 'abcdefghijklmnop'. В нашей таблице базы данных есть столбец x, и для этого столбца есть строки: 1- 'a' 2- 'abc' 3- 'absde' 4- 'abcdef' 5- 'abcdefg' 6- '1abcdefg'
и он должен вернуть номер строки 5
В postgres существует функция для сходства, сначала создайте расширение, которое содержит ее
create extension pg_trgm;
после этого выберите, используя процент сходства следующим образом (например, 80% или желаемое значение)
select x from "table" where similarity('abcdefghijklmnop', x)>0.35;
или наиболее похожая строка будет
select * from "table" order by similarity('abcdefghijklmnop', x) desc limit 1;
Fiddle http://sqlfiddle.com/#!17/c901e/2 и docs https://www.postgresql.org/docs/current/pgtrgm.html
Лучшее, что я нашел, это:
SELECT id,
FROM table
WHERE '3552' LIKE prefix || '%'
ORDER BY prefix DESC
LIMIT 1
спасибо вам всем