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

спасибо вам всем

Вернуться на верх