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

Langage SQL Discussion :

Utilisation d'operateur booleen dans une requete


Sujet :

Langage SQL

  1. #1
    Membre habitué

    Inscrit en
    Octobre 2003
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 178
    Points : 133
    Points
    133
    Par défaut Utilisation d'operateur booleen dans une requete
    Bonjour,

    après d'infructueuses recherches, je vous soumets mon problème.

    J'ai dans une table un champ numérique FlagInfo correspondant à des cases à cocher dans un formulaire.

    si la 1ere case est cochée, le champ vaut 1
    si la 2eme case est cochée, le champ vaut 2
    si les cases 1 et 2 sont cochées, le champ vaut 3
    si la 3eme case est cochée le champ vaut 4
    si les case 1 et 3 sont cochées le champ vaut 5
    si les case 2 et 3 sont cochées le champ vaut 6
    si les cases 1, 2 et 3 cochées le champ vaut 7

    En fait, ça fonctionne en puissance de 2 et j'ai ainsi 8 cases.

    Je souhaite identifier tous les enregistrements pour les quels la case 3 est cochée. Ce qui en algèbre de bool se traduit par un ET.
    Ainsi, 5 ET 3 vaut 0 alors que 6 ET 3 vaut 3

    Je voulais donc écrire la requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select FlagInfo
    from T_AutresInfos
    where (FlagInfo and 3) = 3
    Mais le and n'est pas accepté dans ce sens.

    Quelqu'un aurait-il une solution à me proposer svp.

  2. #2
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 851
    Points : 3 481
    Points
    3 481
    Par défaut
    Bonjour,

    Ce que tu cherches à faire s'appelle une comparaison "bit à bit", or le langage SQL ne fourni pas les opérateurs associés.

    Les opérateurs AND et OR sont des opérateurs logiques, ne fonctionnant qu'avec des valeurs TRUE ou FALSE.

    Cependant, il me semble que tu peux utiliser des operateurs tels que & et | pour le ET et le OU respectivement sous SQL Server, mais pour les autres SGBD je ne sais pas. Il faudrait que tu recherches par rapport à ton SGBD si il supporte les "bitwise operators".
    K

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 761
    Points : 52 547
    Points
    52 547
    Billets dans le blog
    5
    Par défaut
    Je confirme, les opérations binaires de type bit à bit ne sont pas supportées au niveau du langage SQL. J'irai même plus loin, le type SQL BINARY / VARBINARY (chaine binaire) est considéré comme obsolète dans la norme SQL:1999.

    En revanche certains SGBDR permettent encore ce genre de chose. Par exemple dans MS SQL Server, les opérateurs sont ^ pour le OU, & pour le ET et | pour le OU exclusif.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  4. #4
    Membre habitué

    Inscrit en
    Octobre 2003
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 178
    Points : 133
    Points
    133
    Par défaut
    Merci à tous les deux pour la rapidité de votre réponse.

    KilVaiDen, tu m'as donné le mot qui me manquait. Avec bitwise j'ai pu trouver sur le net la solution.

    Pour info, sous oracle, le ET se traduit par BITAND(arg1,arg2)

    Merci encore

Discussions similaires

  1. [MySQL] utilisation de plusieurs variables dans une requete
    Par noche29 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 24/03/2011, 12h48
  2. Utilisation de variables globales dans une requete
    Par FFW_Rude dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 18/01/2011, 12h06
  3. Utilisation du mot LIKE dans une requete
    Par Astro8899 dans le forum VB.NET
    Réponses: 6
    Dernier message: 27/05/2009, 10h20
  4. Utilisation de variable Builder dans une requete SQL
    Par _ben_ dans le forum C++Builder
    Réponses: 6
    Dernier message: 15/06/2007, 11h36
  5. Utilisation d'une requete dans une requete update
    Par hellbilly dans le forum Access
    Réponses: 4
    Dernier message: 09/01/2005, 15h09

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