PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Размито съпоставяне на низ в SQL

В postgres можете да използвате fuzzystrmatch пакет. Той осигурява levenshtein функция, която връща разстоянието между два текста, след това можете да извършите размито съвпадение със следния примерен предикат:

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

Това ще съответства на всички записи, защото разстоянието между „123 Main Ave“ и „123 Main Avex“ е 1 (1 вмъкване).

Разбира се, стойност 1 тук е само пример и ще изпълни съвпадението доста стриктно (разлика само с един знак). Трябва или да използвате по-голямо число, или, както предлага @IVO GELOV - да използвате относително разстояние (разстояние, разделено на дължина).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да заявя jsonb масиви с IN оператор

  2. Функция за задействане на Postgres

  3. JOIN на ниво приложение с WHERE и ORDER BY на N postgresql шарда

  4. Ефективно ГРУПИРАНЕ ПО СЛУЧАЙ израз в Amazon Redshift/PostgreSQL

  5. PostgreSQL не може да извика json_object_keys на скалар