sql >> Databasteknik >  >> RDS >> PostgreSQL

Otydlig matchning av en sträng i SQL

I postgres kan du använda fuzzystrmatch paket. Den tillhandahåller en levenshtein funktion, som returnerar avståndet mellan två texter, kan du sedan utföra fuzzy matchning med följande exemplariska predikat:

where levenshtein(street_address, '123 Main Avex') <= 1

Detta kommer att matcha alla poster, eftersom avståndet mellan '123 Main Ave' och '123 Main Avex' är 1 (1 infogning).

Naturligtvis värde 1 här är bara ett exempel och kommer att utföra matchning ganska strikt (skillnad med endast ett tecken). Du bör antingen använda ett större antal eller, vad @IVO GELOV föreslår - använd relativt avstånd (avstånd dividerat med längden).



  1. Felsökning av Microsoft SQL Server Error 18456

  2. Vad exakt gör citattecken runt tabellnamnet?

  3. ap_pass_brigade misslyckades i handle_request_ipc-funktionen

  4. Antal kolumner