Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/05/2006, 10h10   #1
Nouveau Membre du Club
 
Inscription : juin 2005
Messages : 111
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : juin 2005
Messages : 111
Points : 33
Points : 33
Envoyer un message via ICQ à Alexlesilex Envoyer un message via MSN à Alexlesilex
Par défaut Verifier si un champ est numerique et s'il est NULL

bonjour,

je cherche l'équivalent de Isnumeric() et de nz() sous MySQL

Apres des recherche sur le site et le forum je n'ai pas trouver de reponses (ou alors j'ai mal cherché) c'est pourquoi je tourne vers vous.
Alexlesilex est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2006, 10h25   #2
Expert Confirmé
 
Avatar de yiannis
 
Inscription : septembre 2005
Messages : 1 499
Détails du profil
Informations personnelles :
Âge : 47

Informations forums :
Inscription : septembre 2005
Messages : 1 499
Points : 2 563
Points : 2 563
Bonjour,

je ne peux que repondre a ta question pour savoir si le champs est null
Code :
SELECT mon_champs FROM ma_table WHERE mon_champs IS NULL
pour le numerique je pense que d'autres auront la reponse. Desole de ne t'aider qu'a moitie
__________________
"Ce besoin de remords qui précède le Mal, que dis-je ! qui le crée..." E. CIORAN
yiannis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2006, 10h33   #3
Nouveau Membre du Club
 
Inscription : juin 2005
Messages : 111
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : juin 2005
Messages : 111
Points : 33
Points : 33
Envoyer un message via ICQ à Alexlesilex Envoyer un message via MSN à Alexlesilex
Merci, c'est deja beaucoup.

En fait je me suis mal exprimé.

Je souhaiterais faire la verification dans un IF (isnumeric(champs1/nz(champs2)), ..., ...)
voila en gros ce que je voudrais faire.

Is numeric renvoi true si s'en est un est nz permet de verifier si c'est pas null pour la division par 0
Alexlesilex est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2006, 13h11   #4
Nouveau Membre du Club
 
Inscription : mai 2004
Messages : 69
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 69
Points : 26
Points : 26
c'est dans Mysql que tu fais ton "if" ? C'est pas plutot dans ta page php ou un autre language?
Tu souhaites faire ce test dans quel but , car je voudrais t'aider mais je ne comprend pas trop ce que tu veux faire
Peux tu etre plus precis...
dédéf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2006, 13h41   #5
Nouveau Membre du Club
 
Inscription : juin 2005
Messages : 111
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : juin 2005
Messages : 111
Points : 33
Points : 33
Envoyer un message via ICQ à Alexlesilex Envoyer un message via MSN à Alexlesilex
en fait lors de l'execution de la requete je veux verifier si les donnees que je vais récupérer sont bien des numerics car la personne qui a fait la base croit avoir fait des erreurs dans les champs et donc il ne veut pas que cela s'affiche si la donnee n'est pas un numeric.

Ca parait encore pas tres claire ^^.

Enfin, il existe bien la fonction IF dans mysql [FONT=Courier New]IF(expr1,expr2,expr3)[/FONT]

qui s'utilise de cette maniere

SELECT IF(1>2,2,3); si l'expr1 est "true" alors je renvois l'expr2 sion je renvois l'expr3

A part ca je veux donc vérifier si le champs que je selectionne est bien un numeric. De plus je veux savoir si ce numeric n'est pas diviser par 0
Alexlesilex est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2006, 13h56   #6
Nouveau Membre du Club
 
Inscription : mai 2004
Messages : 69
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 69
Points : 26
Points : 26
Okai je ne connaisais pas ces expression ej suis toujours passé par le code pour faire mes testes mais pour tester si ta valeur est null j'ai toruvé cette expression pour mysql

Code :
1
2
3
4
5
6
7
 
IFNULL(expr1,expr2)  Si expr1 n'est pas NULL, IFNULL() retourne expr1, sinon expr2.
 IFNULL() retourne un nombre ou une chaîne, en fonction du contexte dans lequel il 
est utilisé.
 
mysql> select IFNULL(1,0);
-> 1

en esperant que cela puisse t'aider...
dédéf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2006, 14h18   #7
Nouveau Membre du Club
 
Inscription : juin 2005
Messages : 111
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : juin 2005
Messages : 111
Points : 33
Points : 33
Envoyer un message via ICQ à Alexlesilex Envoyer un message via MSN à Alexlesilex
merci, je pense que je vais essayer avec ca parce que je n'arrive pas a trouver d'equivalent a nz() en MySQL.

sinon pour le numeric je laisse ca en stand by et je verrai ca a la fin parce que la j'avance plus.^^

je laisse le topic sur non resolu si il y en a qui peuvent m'aider
Alexlesilex est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2006, 15h18   #8
Nouveau Membre du Club
 
Inscription : mai 2004
Messages : 69
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 69
Points : 26
Points : 26
je sais pas si tu t'es rendu sur le site de MySql mais va voir il ya des choses interessantes je n'ai pas trouvé exactment pour la chaine de caractère mais je n'ai pas eu le temps de chercher je dois m'y remettre aussi mais tiens le lien ca peut te servir

http://dev.mysql.com/doc/refman/5.0/...functions.html

ce lien revoie sur les fonctions sur les chaines de caractère en MySql
il ya aussi pour les operation numerique il y a moyen de trouver quelques choses d'itneressant. Peut etre en essayant de diviser ta valeur si elle se divise elle est bien numerique sinon non je sais pas exctement a toi de voir...
Bon courage
dédéf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2006, 15h25   #9
Nouveau Membre du Club
 
Inscription : juin 2005
Messages : 111
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : juin 2005
Messages : 111
Points : 33
Points : 33
Envoyer un message via ICQ à Alexlesilex Envoyer un message via MSN à Alexlesilex
Et oui, je suis deja allé sur ce site.

Sinon merci de t'occuper de mon probleme dedef

Mais t'en fais pas je vais faire comme si le champs été numeric.
Alexlesilex est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2006, 16h48   #10
Provisoirement toléré
 
Avatar de Maximilian
 
Inscription : juin 2003
Messages : 2 622
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 2 622
Points : 2 505
Points : 2 505
Citation:
Envoyé par Alexlesilex
en fait lors de l'execution de la requete je veux verifier si les donnees que je vais récupérer sont bien des numerics car la personne qui a fait la base croit avoir fait des erreurs dans les champs et donc il ne veut pas que cela s'affiche si la donnee n'est pas un numeric.
A ma connaissance il n'y a pas de fonction permettant de vérifier si une chaîne est numérique (à part peut-être les regexp)... Et on n'en a pas forcément besoin, pour deux raisons :

- Le contrôle de saisie doit être réalisé au niveau applicatif, ce n'est pas au SGBD de vérifier si l'utilisateur s'est trompé dans le remplissage des champs.
- Tant qu'à faire autant utiliser de véritables colonnes de type numérique (INT, DECIMAL...) qui elles ne vont pas accepter des valeurs erronnées.
__________________
Pensez au bouton
Maximilian est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2006, 17h47   #11
Nouveau Membre du Club
 
Inscription : juin 2005
Messages : 111
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : juin 2005
Messages : 111
Points : 33
Points : 33
Envoyer un message via ICQ à Alexlesilex Envoyer un message via MSN à Alexlesilex
Pour le fait de mettre de "veritables colonnes" de type numérique je suis d'accord à 100 % mais le probleme est que je ne peux pas changer les noms de champs car je met à jour a partir d'une base ACCESS et il faut donc que les champs soit identiques, de plus la personne qui va utilisé monapplication ne veut pas changer toute sa base ACCESS car ca reviendrais à modifier toutes les requêtes ( ce qui fait une masse de travail trop important ).

Mais je suis d'accord ce n'est pas le meilleur, mais bon je fais avec.

Merci pour les reponses.
Alexlesilex est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/07/2009, 19h01   #12
Inactif
 
Inscription : avril 2008
Messages : 7
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 7
Points : 8
Points : 8
Bonjour,
je ne pense pas qu'il existe une commande Pb qui le permet (jusqu'à preuve du contraire). Mais tu peux utiliser l'une des solutions suivantes:

1. Créer une fonction qui teste les types de champ (si numérique ou pas)

2. Utiliser une fonction IP de windows (IsNumeric () ou IsDigit)

3. Solution un peu pénible mais c'est quand même une solution :
Tester le contenu du champ octet par octet


Voila.

A bientôt
Mekkisoft
mekkisoft est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h29.


 
 
 
 
Partenaires

Hébergement Web