viernes, 11 de noviembre de 2011

MySQL: Devolver los resultados según un orden establecido

Básicamente, la mayoría de consultas que hacemos a la base de datos constan de tres aspectos: de dónde queremos obtener los datos, con qué criterios queremos seleccionar los datos y en qué orden los necesitamos. Nos vamos a centrar en este último aspecto.

Normalmente nos basta con ordenar los resultados por orden numérico, antigüedad o alfabéticamente. Pero, a veces, necesitaremos que se devuelvan en un orden predeterminado.

Para ello, podemos echar mano de la función de MySQL FIND_IN_SET(). Dicha función devuelve la posición de una cadena dentro de una lista de elementos separados por comas. Por ejemplo:

FIND_IN_SET('jueves', 'lunes,martes,miércoles,jueves,viernes,sábado,domingo') => 4

Si la cadena no se encuentra, la función devuelve 0.

Es importante, si no os queréis romper la cabeza preguntándoos por qué no funciona, que no haya espacios en blanco entre las comas.

Fuente: FIND_IN_SET() :: MySQL Function of the Day