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
Libérer: 2025-01-04 01:52:40
original
450 Les gens l'ont consulté

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
Copier après la connexion

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
Copier après la connexion

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 de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal