12
votes

En utilisant max () dans le champ Varchar

J'ai une table avec un ensemble de données suivant xxx pré>

i utilise max () code> dans ce champ. p>

Select max(ID) from <table-name>;


2 commentaires

en.wikipedia.org/wiki/lexicographic_order


C'est un champ varchar , pourquoi serait-il trié comme un numéro?


6 Réponses :


24
votes

Vous obtenez d010 car alphabétiquement, d010 est livré après d0012 ou dit une autre manière, d01 vient après < code> d00 et donc tout ce qui est d01x vient après tout ce qui commence d00x .


1 commentaires

Et voici un exemple, comment faire face à un tel problème - Stackoverflow.com/a/16496963/1469208



0
votes

Cela devrait fonctionner

Select MAX(ID) from table where IsNumeric(ID) = 1 ; 


0 commentaires

4
votes

Le code ci-dessous fonctionne pour moi selon votre attente xxx


0 commentaires

0
votes

Cela fonctionnera sûrement.

    select MAX(CAST(REPLACE(REPLACE(ID, 'D', ''), '', '') as int)) from <table-name>


0 commentaires

0
votes

premier Varchar doit casser comme INT pour sélectionner sous forme max. Utilisez ci-dessous Query:

Sélectionnez max (Cast (ID SIGNÉ SIGNÉ)) AS max_id à partir de ;


0 commentaires

0
votes

Sélectionnez * De Commande par Cast ( ID comme décimal (10, 3)) Desc


0 commentaires