PatBlarg
Messages postés67Date d'inscriptionjeudi 26 juin 2008StatutMembreDernière intervention11 mai 2010
-
16 déc. 2008 à 21:58
PatBlarg
Messages postés67Date d'inscriptionjeudi 26 juin 2008StatutMembreDernière intervention11 mai 2010
-
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.
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 201137 16 déc. 2008 à 23:25
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.
PatBlarg
Messages postés67Date d'inscriptionjeudi 26 juin 2008StatutMembreDernière intervention11 mai 2010 18 déc. 2008 à 14:13
Ç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?
PatBlarg
Messages postés67Date d'inscriptionjeudi 26 juin 2008StatutMembreDernière intervention11 mai 2010 18 déc. 2008 à 18:58
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.