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

 MySQL Discussion :

[fonction MySQL] test d'une expression


Sujet :

MySQL

  1. #1
    Membre averti Avatar de spilliaert
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 268
    Points : 307
    Points
    307
    Par défaut [fonction MySQL] test d'une expression
    Bonjour,
    Je cherche une fonction MySQL (donc qu'on peut insérer dans une requête) qui teste si une expression est bonne et renvoie 1 et sinon, elle renvoie 0:par exemple:

    function(3)=>renvoie 1
    function(0)=>renvoie 0
    function(2=2)=>renvoie 1
    Cela est-il possible ??

    Merci...

    ps;j'utilise Mysql 5.0.17

  2. #2
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut Re: [debutant][fonction MySQL]test d'une expression
    Avec le fameux "NOT NOT" du C/C++:

    Note: on peut pas le faire en Java parce qu'on n'a pas de convertion implicite des entiers vers les booléens...


    C'est équivalent à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT IF(expression, 1, 0) ;
    ... mais en plus court (aussi, beaucoup de gens se plaindront de ne pas comprendre ce que fait le "!!" et iront même jusqu'à dire que cela ne fait rien puisque c'est la négation d'une négation. Ceux-là devraient retourner en première année pour une petite révision sur les opérateurs...)
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  3. #3
    Membre expérimenté
    Avatar de Adjanakis
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    739
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2004
    Messages : 739
    Points : 1 351
    Points
    1 351
    Par défaut
    Bonsoir,

    Surtout, en cas d'utilisation de la première solution de pcaboche, ne pas oublier les parenthèses, ça peut aider
    Pensez au tag

  4. #4
    Membre averti Avatar de spilliaert
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 268
    Points : 307
    Points
    307
    Par défaut
    merci pour ces réponses claires...

    j'ai un table contenant des champs numériques:Q1,Q2,Q3,Q4 (en fait des réponses à des questions...)
    donc,si j'ai bien compris, si je veux additionner toutes les personnes qui ont répondu la première possiblité :
    je fais:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT 
        (if((Q2&(1<<2)), 1, 0) + if((Q3&(1<<2)), 1, 0)) AS total 
    FROM ma_table
    qui est bien équivalent à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT 
        (!!(Q2&(1<<2)) + !!(Q3&(1<<2))) AS total 
    FROM ma_table
    ceci vous semble-t-il correct ? donc; si j'ai 2 enregistrement et que chacun a 4 dans le champ Q2 et Q3 , je devrai avoir comme réponse total=2(pour mes 2 enregistrements).

    C'est-à-dire que quel que soit le chiffre que j'obtiens avec 'Q2&(1<<0)' si il est non nul, j'aurai 1 ?

    ce que je dis est correct ou pas ?

    merci...

  5. #5
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    spilliaert, plutôt que d'écrire (1<<2), tu pourrais pas écrire directement 4? Et plutôt que d'écrire 4, tu pourrais mettre 4 dans une constante REPONSE1 et utiliser cette constante dans ton programme. Ca serait plus clair.

    Sinon, ça m'a l'air correct...
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  6. #6
    Membre averti Avatar de spilliaert
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 268
    Points : 307
    Points
    307
    Par défaut
    merci de ta réponse et de ton conseil mais je préfère cette écriture (j'ai beucoup de requêtes à écrire et c'est plus clair pour mon cerveau de débutant)

    encore merci pour ces réponses

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

Discussions similaires

  1. Test d'une expression régulière simple mais qui ne marche pas
    Par bernidupont dans le forum Général VBA
    Réponses: 6
    Dernier message: 07/05/2015, 11h38
  2. Test d'une expression régulière
    Par new_wave dans le forum C#
    Réponses: 0
    Dernier message: 16/02/2015, 11h34
  3. Réponses: 2
    Dernier message: 19/01/2007, 17h24
  4. Réponses: 6
    Dernier message: 14/11/2006, 15h17
  5. [SQL] porter une fonction MySql sur PostgreSQL
    Par spilliaert dans le forum PostgreSQL
    Réponses: 9
    Dernier message: 02/06/2006, 20h30

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