J'ai posé une question similaire il y a quelques mois. Situé ici: MySQL Query based on stringComparaison de chaînes MySQL
Le problème que je rencontre est que cela ne fonctionne que dans un ordre particulier et, dans certains cas, cela fonctionne trop bien.
Voici un extrait des données que cette requête est le filtrage (les doublons sont destinés, les données réelles):
- BELLMORE
- ATLANTIC BCH
- ATLANTIC BEACH
- E HILLS
- EAST HILLS
- EAST ROCKAWAY
- FAR ROCKAWAY
- FLORAL PARK
- FLORAL PARK
- HIGHLAND HEIGHTS
- N HIGHLAND HGTS
- NORTH HIGHLAND HEIGHTS
L'une requête qui a contribué à ma dernière question (MySQL Query based on string) a bien fonctionné pour une instance et échoué pour l'autre instance. Voici la requête:
select names from tablename group by substring_index(names," ",1)
qui retourne:
- BELLMORE
- ATLANTIC BEACH
- EAST HILLS
- FAR ROCKAWAY
- FLORAL PARK
- HIGHLAND HEIGHTS
- N HIGHLAND HGTS
- NORTH HIGHLAND HEIGHTS
Le problème que l'on est que vous pouvez le voir enlever une ville qu'il ne devrait pas avoir parce qu'il utilisait seulement le premier mot pour le grouper par. Celui qu'il a retiré était:
- EAST ROCKAWAY
Il a été GROUPÉ PAR L'EST. Comme je continue à écrire ceci, je pense que c'est presque impossible parce que la position du nom de ville statique par rapport aux parties variables est toujours changeante. Sauf si vous pouvez comparer un certain nombre de caractères. Ce qui n'est pas sans faille de loin. Si quelqu'un pense avoir un aperçu ou avoir travaillé et accompli une telle chose, j'apprécierai les commentaires et les conseils. Le résultat de fin serait:
- BELLMORE
- ATLANTIC BEACH
- EAST HILLS
- EAST ROCKAWAY
- FAR ROCKAWAY
- FLORAL PARK
- HIGHLAND HEIGHTS
Pouvez-vous générer manuellement une liste de synonymes communs, tels que 'N' =' North', 'Hghts' =' Heights', etc. – mellamokb