"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como classificar os números de versão do MySQL armazenados como `varbinary(300)`?

Como classificar os números de versão do MySQL armazenados como `varbinary(300)`?

Publicado em 15/11/2024
Navegar:470

How to Sort MySQL Version Numbers Stored as `varbinary(300)`?

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.

Tutorial mais recente Mais>

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