IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Procédural MySQL Discussion :

Verifier si un champ est numerique et s'il est NULL


Sujet :

SQL Procédural MySQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 111
    Points : 62
    Points
    62
    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.

  2. #2
    Membre émérite
    Avatar de yiannis
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 494
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 494
    Points : 2 791
    Points
    2 791
    Par défaut
    Bonjour,

    je ne peux que repondre a ta question pour savoir si le champs est null
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 111
    Points : 62
    Points
    62
    Par défaut
    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

  4. #4
    Membre du Club
    Inscrit en
    Mai 2004
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 69
    Points : 46
    Points
    46
    Par défaut
    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...

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 111
    Points : 62
    Points
    62
    Par défaut
    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

  6. #6
    Membre du Club
    Inscrit en
    Mai 2004
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 69
    Points : 46
    Points
    46
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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...

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 111
    Points : 62
    Points
    62
    Par défaut
    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

  8. #8
    Membre du Club
    Inscrit en
    Mai 2004
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 69
    Points : 46
    Points
    46
    Par défaut
    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

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 111
    Points : 62
    Points
    62
    Par défaut
    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.

  10. #10
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    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

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 111
    Points : 62
    Points
    62
    Par défaut
    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.

  12. #12
    Inactif
    Inscrit en
    Avril 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 7
    Points : 10
    Points
    10
    Par défaut
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Verifier si un champ est renseigné
    Par selecto dans le forum VB.NET
    Réponses: 12
    Dernier message: 13/11/2009, 23h51
  2. Verifier qu'un champ text est rempli pour activer un submit
    Par sadkat dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 27/03/2008, 16h35
  3. verifier si un champ de saisie est vide
    Par cool dans le forum WinDev
    Réponses: 4
    Dernier message: 22/01/2008, 15h12
  4. [MySQL] Verifier si un champ est vide et on ne l'affiche pas
    Par cysedbs dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 12/12/2007, 16h31
  5. Trouver si une réponse à un read est numérique
    Par ggnore dans le forum Linux
    Réponses: 2
    Dernier message: 15/10/2004, 17h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo