Classificação do número de versão do MySQL
Ao armazenar números de versão como varbinary(300) no MySQL, classificá-los usando a ordem padrão por version_number pode render resultados incorretos. Para resolver isso, considere utilizar a função INET_ATON para facilitar a classificação.
A consulta modificada:
SELECT version_number FROM table ORDER BY INET_ATON(SUBSTRING_INDEX(CONCAT(version_number,'.0.0.0'),'.',4))
Esta técnica depende da função INET_ATON para converter uma string que representa um endereço IP em uma representação numérica . Ao concatenar '.0.0.0' com version_number, garantimos que cada número de versão tenha pelo menos quatro componentes, que então utilizamos SUBSTRING_INDEX para extrair.
Ao classificar com base na representação numérica dos primeiros quatro componentes de cada número de versão, alcançamos a ordem de classificação desejada. No entanto, observe que, como essa classificação depende de uma função, ela pode incorrer em uma penalidade de desempenho em comparação à classificação diretamente na coluna com um índice.
Outra solução, proposta por @spanky, envolve separar os componentes do número de versão em colunas individuais. Por exemplo, crie colunas para versões principais, secundárias, de patch e de compilação. Essa abordagem permite uma classificação eficiente em componentes específicos, mas pode exigir uma manipulação de dados mais complexa.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3