Ver Mensaje Individual
  #6 (permalink)  
Antiguo 30/04/2012, 10:51
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Consulta mysql ORDER BY explode()

Si no te funciona, es porque no en todos los casos de tus registros un punto viene seguido de un espacio, o bien no en todos está el punto.
El sentido de SUBSTRING_INDEX() es obtener la cadena de texto siguiente a partir de un punto variable de la misma, como es la posición de la subcadena ". ", que cambia si es Sr., Sra. o Srta.
En ese contexto, busca un patrón y devuelve lo que sigue al mismo. Pero si el patrón no es estable, no sirve.

Ahora bien, a pesar de que te resulte absurdo, probablemente la mejor solución sea corregir esos registros para eliminarles el "Sr." / "Sra. "/"Srta." que contienen y poner esa abreviatura en un campo específico (que suele llamarse "tratamiento" o "título"). Tardarás menos y tendrá mejores resultados que el "parche" que estás intentando.

Ten en cuenta que jamás se ponen esas abreviaturas en el campo de nombre, precisamente por problemas como los que se te presentan, y especialmente porque no son parte del nombre. Ponerlo todo junto es un error de consistencia que debes corregir y no parchar.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)