测试数据:http://dbascripts.cn/wiki/cf/orte.txt


PGOracleMySQL
说明

pg_trgm提供了距离操作符( <-> ),用来计算两个字符之间的距离。计算结果范围为0-1,值越小表示两个字符越相似。


utl_match


dnf install postgresql13-contrib -y
postgres=# create extension pg_trgm;
CREATE EXTENSION


查询
postgres=# select * from t_location 
order by name <-> 'Long' limit 10 ;
   name
----------
 Lang
 Lofer
 Loich
 Lorüns
 Lochau
 Leogang
 Lassing
 Lenzing
 Loretto
 Leonding
(10 rows)


SQL> select * from (
      select * from t_location 
        order by utl_match.edit_distance_similarity(name,'Long')
      desc )
    where rownum < 10 ;

NAME
--------------------------------------------------
Lang
Leogang
Lend
Lans
Leonding
Lengau
Linz
Wang
Langau
9 rows selected

SQL> select * from (
      select * from t_location
        order by utl_match.jaro_winkler_similarity(name,'Long') 
      desc )
    where rownum < 10 ;

NAME
--------------------------------------------------
Lang
Langau
Lengau
Lohnsburg am Kobernau脽erwald
Leogang
Floing
Losenstein
Lockenhaus
Leonding
9 rows selected


  • No labels