假设给定字符串是'abcdefghijklmnop',我们数据库表有一个名为x的列,对于该列,行是:1- 'a' 2- 'abc' 3- 'absde' 4- 'abcdef' 5- 'abcdefg' 6- '1abcdefg'它应该返回行号5
gtlvzcf81#
在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网站上提供的信息。
8e2ybdfx2#
我找到的最好的一个是:
SELECT id, FROM table WHERE '3552' LIKE prefix || '%' ORDER BY prefix DESC LIMIT 1
谢谢大家
2条答案
按热度按时间gtlvzcf81#
在postgres中存在一个相似性函数,首先创建包含它的扩展
之后,使用相似性百分比进行选择,如以下所示(例如80%或您所需的值)
或者最相似的字符串将被
Fiddle网站上提供的信息。
8e2ybdfx2#
我找到的最好的一个是:
谢谢大家