Hice una pregunta similar hace un par de meses. Situado aquí: MySQL Query based on stringComparación de cadenas MySQL
El problema que me encuentro es que esto funciona en un solo orden en particular y en algunos casos funciona demasiado bien.
Aquí hay un fragmento de los datos que esta consulta está filtrando (duplicados están destinados, los datos reales):
- 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
La única consulta que ayudó en mi última pregunta (MySQL Query based on string) trabajó bien para una instancia y falló para la otra instancia. Ésta es la consulta:
select names from tablename group by substring_index(names," ",1)
que devuelve:
- BELLMORE
- ATLANTIC BEACH
- EAST HILLS
- FAR ROCKAWAY
- FLORAL PARK
- HIGHLAND HEIGHTS
- N HIGHLAND HGTS
- NORTH HIGHLAND HEIGHTS
El problema con esto es que, como se puede ver que se elimine una ciudad que no debería tener, ya que sólo se utilizaba la primera palabra para agruparlo por. El que eliminó fue:
- EAST ROCKAWAY
Fue GROUP'ed BY EAST.
Mientras continúo escribiendo esto, siento que es casi imposible porque la posición del nombre de la ciudad estática frente a las partes variables siempre está cambiando. A menos que puedas comparar una cierta cantidad de personajes. Lo cual no es perfecto por lejos. Si alguien piensa que puede tener alguna idea o ha trabajado y logrado tal cosa, agradeceré la retroalimentación y la orientación. El resultado final sería:
- BELLMORE
- ATLANTIC BEACH
- EAST HILLS
- EAST ROCKAWAY
- FAR ROCKAWAY
- FLORAL PARK
- HIGHLAND HEIGHTS
Puede generar manualmente una lista de sinónimos comunes, como 'N' =' North', 'Hghts' =' Heights', etc. – mellamokb