Ordenar columnas de cadena con números incrustados en SQL
En SQL, es posible ordenar columnas de cadena que contienen números usando técnicas específicas. Esto puede resultar útil cuando el algoritmo de clasificación natural de bases de datos como MySQL no produce los resultados deseados.
Para lograr una clasificación personalizada de columnas de cadenas con números, se pueden emplear varios enfoques:
Usando CAST y SUBSTRING:
SELECT *
FROM table
ORDER BY CAST(SUBSTRING(column,LOCATE(' ',column) 1) AS SIGNED)
Esta técnica divide la columna en dos partes: el prefijo antes del espacio y el número después. Luego, el número se convierte a un tipo numérico (en este caso, FIRMADO) para compararlo.
Usando SUBSTRING_INDEX:
ORDER BY SUBSTRING_INDEX(st, " ", 1) ASC, CAST(SUBSTRING_INDEX(st, " ", -1) AS SIGNED)
Este El enfoque utiliza la función SUBSTRING_INDEX para extraer los componentes de prefijo y número. Luego ordena primero por prefijo y luego por número convertido.
Nota: Si el patrón de columna difiere de "WORD_space_NUMBER", es posible que sea necesario un enfoque diferente.
Ejemplos:
Datos de muestra | Natural Clasificación | Clasificación personalizada |
---|---|---|
a 1, a 12, a 6, a 11 | a 1, a 12, un 2, un 3 | un 1, un 2, un 3, un 12 |
b 1, b 12, b 6, b 11 | b 1, b 12, b 2, b 3 | b 1, b 2, b 3, b 12 |
Al emplear estas técnicas, es posible para ordenar columnas de cadenas con números incrustados de forma personalizada, garantizando que los resultados se alineen con los requisitos específicos de la aplicación.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3