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 ?
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!