Maison >base de données >tutoriel mysql >Comment trier numériquement les colonnes VARCHAR avec des valeurs numériques et alphabétiques mixtes dans SQL Server ?

Comment trier numériquement les colonnes VARCHAR avec des valeurs numériques et alphabétiques mixtes dans SQL Server ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-04 01:52:40421parcourir

How to Sort VARCHAR Columns with Mixed Numeric and Alphabetic Values Numerically in SQL Server?

Tri des colonnes VARCHAR avec des valeurs numériques dans SQL Server

Lorsque vous traitez une colonne VARCHAR pouvant contenir à la fois des chiffres et des lettres, le tri présente un défi si vous souhaitez que les valeurs numériques soient ordonnées numériquement. Par défaut, SQL Server triera une telle colonne par ordre alphabétique, ce qui n'est pas souhaitable dans ce cas.

Pour obtenir le comportement de tri souhaité, une solution consiste à remplir les valeurs numériques avec des caractères pour garantir que toutes les chaînes ont la même longueur. Cela permet à SQL Server de trier les données numériquement.

Voici un exemple de requête qui illustre cette approche :

select MyColumn
from MyTable
order by
    case IsNumeric(MyColumn)
        when 1 then Replicate('0', 100 - Len(MyColumn)) + MyColumn
        else MyColumn
    end

Dans cette requête, la fonction IsNumeric est utilisée pour déterminer si une valeur est numérique. . Si tel est le cas, la fonction Répliquer ajoute des zéros non significatifs pour compléter la chaîne jusqu'à une longueur fixe (100 dans cet exemple). Sinon, la valeur reste inchangée.

En triant selon cette expression, les valeurs numériques seront complétées et triées numériquement, tandis que les valeurs non numériques seront triées par ordre alphabétique. Cela garantit l'ordre de tri souhaité, comme indiqué dans l'exemple de la question d'origine :

1
2
10
A
B
B1

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn