Ho fatto una domanda simile un paio di mesi fa. Situato qui: MySQL Query based on stringConfronto delle stringhe MySQL
Il problema che sto incontrando è che questo funziona in un solo ordine particolare e in alcuni casi funziona troppo bene.
Ecco un frammento dei dati che questa query sta filtrando fuori (duplicati sono destinati, i dati reali):
- 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
Quello query che ha aiutato nella mia ultima domanda (MySQL Query based on string) ha lavorato bene per un caso e non è riuscito per l'altra istanza. Ecco la domanda:
select names from tablename group by substring_index(names," ",1)
che restituisce:
- BELLMORE
- ATLANTIC BEACH
- EAST HILLS
- FAR ROCKAWAY
- FLORAL PARK
- HIGHLAND HEIGHTS
- N HIGHLAND HGTS
- NORTH HIGHLAND HEIGHTS
Il problema di questo è che, come si può vedere rimosso una città che non dovrebbe avere perché è stato solo usando la prima parola per raggrupparlo. Quello rimosso era:
- EAST ROCKAWAY
E 'stato GROUP'ed DA EST.
Mentre continuo a scrivere questo, ritengo che sia quasi impossibile perché la posizione del nome della città statico rispetto alle parti variabili cambia continuamente. A meno che non sia possibile confrontare una certa quantità di caratteri. Che non è di gran lunga impeccabile. Se qualcuno pensa che possano avere qualche intuizione o abbia lavorato e realizzato una cosa del genere apprezzerò il feedback e la guida. Il risultato finale sarebbe:
- BELLMORE
- ATLANTIC BEACH
- EAST HILLS
- EAST ROCKAWAY
- FAR ROCKAWAY
- FLORAL PARK
- HIGHLAND HEIGHTS
Puoi generare manualmente un elenco di sinonimi comuni, come 'N' =' Nord', 'Hghts' =' Heights', ecc. – mellamokb