Sélectionner le max d'une VarChar [Résolu]

PatBlarg 67 Messages postés jeudi 26 juin 2008Date d'inscription 11 mai 2010 Dernière intervention - 16 déc. 2008 à 21:58 - Dernière réponse : PatBlarg 67 Messages postés jeudi 26 juin 2008Date d'inscription 11 mai 2010 Dernière intervention
- 18 déc. 2008 à 18:58
Bonjour, j'ai un gros problème de requête SQL. Plutôt 2 même...

J'ai un logiciel qui écrit des donnée numérique dans une base de donnée SQL.

Dépendant d'un certain triage que je fais, je dois aller sélectionner la valeur maximale dans une colonne créé par le logiciel.

 Problème numéro 1 :
Si j'ai des données de 5000 à 10500 par exemple, il me sélectionnera comme dernière valeur 9999.7 par exemple. (Qui serait la dernière valeur plus petite avant 10000)
Si j'ai bien compris, c'est dû au fait que la colonne est de type varchar. J'ai cherché et je suis tombé sur la fonction to_number ... mais c'est pas pour SQL Serveur Express on dirait.

Problème numéro 2 :
Pour les donnée plus grande que 999 999, les valeurs sont écritent au format suivant : 2.92060e+006
Donc ça ne fonctionne pas non plus avec ces données la....

J'ai bien tenté de faire analysé chaque valeur 1 a 1 sous VBA excel, mais avec 4 millions d'enregistrements à vérifier ça risque d'être long... (J'en avais pour près de 10 minutes pour 400 000 enregistrements)

Je pourrais tenté avec VB.NET mais je doute que ca soit plus performant.

Merci de votre aide!
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
nhervagault 6069 Messages postés dimanche 13 avril 2003Date d'inscription 15 juillet 2011 Dernière intervention - 16 déc. 2008 à 23:25
3
Merci
Salut

Regardes du coté de CAST et CONVERT
c'est pas parce que le nombre est en ecriture scientique que la comparaison
ne fonctionne pas

normalement

SQL server detectera 16E15 < 16E15 +1 (c'est un nombre au hasard
car le nombre sera stocké sur 32 ou 64 bits.
L'ecriture c'est pour simplifié l'affichage.

Bonne convertion

Merci nhervagault 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de nhervagault
PatBlarg 67 Messages postés jeudi 26 juin 2008Date d'inscription 11 mai 2010 Dernière intervention - 18 déc. 2008 à 14:13
0
Merci
Ça fonctionne! Presque... pas sur toute mes tables.
J'ai utilisé Cast(Data as real)

Il semblerait que mon logiciel écrit à quelque fois d'autres types de données qui me sont inconnues. Quand je spécifie une plage de temps et que ce genre de donnée s'y trouve, ca ne passe pas.

Cette donnée (qui se répète plusieurs fois) est sous forme "259::261"

Est-ce que je peux spécifié par requête SQL d'ignoré totalement les données contenant des ":" lors du cast?
Commenter la réponse de PatBlarg
PatBlarg 67 Messages postés jeudi 26 juin 2008Date d'inscription 11 mai 2010 Dernière intervention - 18 déc. 2008 à 14:22
0
Merci
Finalement j'ai trouvé avec peu de recherche pour mon problème de ":"

Merci beaucoup pour ton aide!

Voici la requête que j'ai créé et qui me sort la valeur désirée :

SELECT max(CAST(Data as Real))
FROM [dbo].[TLData]
Where TLInstance = 11 and NOT Data LIKE '%:%' and
Timestamp between '2008-11-30'  and '2008-12-31'
Commenter la réponse de PatBlarg
nhervagault 6069 Messages postés dimanche 13 avril 2003Date d'inscription 15 juillet 2011 Dernière intervention - 18 déc. 2008 à 18:51
0
Merci
Les données avec des : c'est pas les minutes et les heures??
Commenter la réponse de nhervagault
PatBlarg 67 Messages postés jeudi 26 juin 2008Date d'inscription 11 mai 2010 Dernière intervention - 18 déc. 2008 à 18:58
0
Merci
Non, la colonne "Data" contient une valeur en kW ou en kWh dépendant des données, mais pour une raison inconnue, le logiciel semble écrire des "codes" qui contient des ":" pour son propre fonctionnement. (Je n'ai aucun controle sur celui-ci.)

Par contre, la colonne Timestamp contient bel et bien l'heure en plus de la date, mais ce n'était pas cette colonne là qui me posait problème.
Commenter la réponse de PatBlarg

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.