sql >> Databasteknik >  >> RDS >> Mysql

Hur sorterar man MySQL-resultat med bokstäverna först, symbolerna sist?

Detta kommer att sätta alla artister vars namn börjar med en bokstav i a-z före de som inte gör det:

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

Se att det fungerar online:sqlfiddle

Men du kanske föredrar att lagra en andra kolumn med det förenklade namnet så att du kan placera dem i en ordning som är mer meningsfull:

artists

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

Värdena för simplified_name kan inte enkelt genereras i MySQL, så du kanske vill använda ett allmänt programmeringsspråk för att dra ut alla artister, omvandla dem till förenklade namn och sedan fylla i databasen med resultaten.

När detta är gjort kan du använda denna fråga:

SELECT DISTINCT artist
FROM artists
ORDER BY simplified_name


  1. När ett skript körs på SQLPlus skrivs det ut en sekvens av nummer istället för utdata

  2. Håll ordning från 'IN'-klausulen

  3. symfony 1.4 propel:build-all fungerar inte på Mysql 5.5

  4. Ta reda på om ett objekt är en användardefinierad tabell i SQL Server med OBJECTPROPERTY()