#1 Le 22/01/2020, à 12:13
- Marc80
[Resolu] Requete MySQL problème décimaux "Unknown column 'nan'
Bonjour à tous,
je gère des bases MySQL (notamment via phpmyadmin) que j'affiche sur une page Web. La connexion est propre donc cela va bien
Néanmoins, j'ai un soucis au niveau des requêtes qui ne me donne pas du tout les mêmes résultats lorsque ma requete pour une variable comprends la restriction BETWEEN entre une valeur plus grande que 10 et inférieure à 10.
Je souhaite exécuter la requête suivante :
SELECT * FROM Coating WHERE Variable BETWEEN '9' AND '15'
Le résultat retourné est vide .. Alors qu'il existe bien des lignes dans mes données respectant cette condition.
MAIS, si je décide d'écécuter ces requetes suivantes par exemples :
SELECT * FROM Coating WHERE Variable BETWEEN '9' AND '9.5'
ou
SELECT * FROM Coating WHERE Variable BETWEEN '10' AND '15'
là j'ai des résultats ... J'ai l'impression que SQL n'arrive pas à faire le "passage" à la dizaine pour la variable en question. Et c'est le même soucis pour toutes les autres variables du même type ...
Remarque : j'ai mis comme type de la variable 'VARCHAR(255)' et si je passe en FLOAT mon problème est résolu ... SAUF que pour le travail que j'ai à faire je n'ai pas la possibilité de mettre en float car il est possible que certaines lignes aient un NaN à la place d'une valeur numérique ...
De ce fait lorsqu'avec Python je souhaite remplir cette base de données, j'ai l'erreur
"Unknown column 'nan' in 'field-list'"
si je mets en FLOAT, et j'ai le soucis précédent si je mets en "VARCHAR(255)"
Sauriez vous comment contourner le problème ? Quite à gruger dans la définition des types des variables MySQL mais pour que ma requete marche quelque soit la valeur minimale et maximale ?
Merci d'avance !
modération : déplacement de Autres logiciels et problèmes généraux vers Serveurs
Dernière modification par Marc80 (Le 23/01/2020, à 14:40)
Hors ligne
#2 Le 22/01/2020, à 12:30
- krodelabestiole
Re : [Resolu] Requete MySQL problème décimaux "Unknown column 'nan'
Remarque : j'ai mis comme type de la variable 'VARCHAR(255)' et si je passe en FLOAT mon problème est résolu ... SAUF que pour le travail que j'ai à faire je n'ai pas la possibilité de mettre en float car il est possible que certaines lignes aient un NaN à la place d'une valeur numérique ...
si tu veux enregistrer des nombres dans une bdd et en particulier si tu veux utiliser des fonctionnalités propres aux nombres, stocke les en tant que nombre !
sinon je n'ai aucune idée du résultat de between sur une chaîne de caractère : ordre alphabétique peut-être ? dans ce cas 9 est plus grand que 10...
si tu n'utilises pas de nombres négatif tu peux par ex. utiliser -1 à la place de NaN...
sinon il faudra probablement ajouter un champs supplémentaire (booléen) pour traiter ce cas.
nouveau forum ubuntu-fr on en parle là : refonte du site / nouveau design
profil - sujets récurrents - sources du site
Hors ligne
#3 Le 22/01/2020, à 12:34
- krodelabestiole
Re : [Resolu] Requete MySQL problème décimaux "Unknown column 'nan'
sinon je n'ai aucune idée du résultat de between sur une chaîne de caractère : ordre alphabétique peut-être ? dans ce cas 9 est plus grand que 10...
et si vraiment tu ne peux pas faire autrement, utilise la fonction CAST : https://dev.mysql.com/doc/refman/5.7/en … ction_cast
mais je te conseille 1000x de stocker tes nombres comme des nombres !
nouveau forum ubuntu-fr on en parle là : refonte du site / nouveau design
profil - sujets récurrents - sources du site
Hors ligne
#4 Le 23/01/2020, à 14:39
- Marc80
Re : [Resolu] Requete MySQL problème décimaux "Unknown column 'nan'
krodelabestiole a écrit :sinon je n'ai aucune idée du résultat de between sur une chaîne de caractère : ordre alphabétique peut-être ? dans ce cas 9 est plus grand que 10...
et si vraiment tu ne peux pas faire autrement, utilise la fonction CAST : https://dev.mysql.com/doc/refman/5.7/en … ction_cast
mais je te conseille 1000x de stocker tes nombres comme des nombres !
effectivememnt
Bonjour krodelabestiole ,
tu as raison je dois absolument les stocker en tant que nombre ... J'ai suivi ton conseil, de mettre une valeur négative à la place des NaN et ça marche !! Pour la page Web je remplace cette valeur négative par un string du style "ValueError" et ca nous convient très bien
Merci pour l'aide !!
Hors ligne