sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo ordenar los resultados de MySQL con letras primero, símbolos al final?

Esto pondrá a todos los artistas cuyos nombres comienzan con una letra a-z antes de los que no:

SELECT DISTINCT artist
FROM songs
ORDER BY artist REGEXP '^[a-z]' DESC, artist

Véalo funcionando en línea:sqlfiddle

Pero es posible que prefiera almacenar una segunda columna con el nombre simplificado para que pueda ponerlos en un orden que tenga más sentido:

artists

artist            | simplified_name
------------------------------------
&i                | i
+NURSE            | nurse
2007excalibur2007 | excalibur

Los valores para simplified_name no se puede generar fácilmente en MySQL, por lo que es posible que desee utilizar un lenguaje de programación de propósito general para extraer a todos los artistas, transformarlos en nombres simplificados y luego llenar la base de datos con los resultados.

Una vez hecho esto, puede utilizar esta consulta:

SELECT DISTINCT artist
FROM artists
ORDER BY simplified_name