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 :

Pour les expert des requêtes SQL


Sujet :

Langage SQL

  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 273
    Par défaut Pour les expert des requêtes SQL
    Bonsoir,

    J'utilise un script dont une requête commence par ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SQL = "select "
    SQL = SQL & " FROM_UNIXTIME((LogSerial & 0xFFFFFFFF00000000) >> 32 )AS LogTime, "
    SQL = SQL & " (LogSerial & 0x0000000000FF0000) >> 16 AS ZoneIdx, "
    SQL = SQL & " (LogSerial & 0x000000000000F000) >> 12 AS LogCommonType,"
    Mais je ne sais absolument pas ce que c'est ni comment ça fonctionne:
    Pourquoi y a-t-il un "&" suivit d'un truc très long qui commence par "0x" ?
    Qu'est ce qui se passe avec le ">>" ?

    Par contre je comprend que "FROM_UNIXTIME" permet de formater la date et l'heure résultante de ce truc bizarre, et que LogTime est le "mot clé" qui correspond à la date et l'heure.

    LogSerial correspond à un truc comme par exemple 6321456997820013545

    Ce n'est pas indispensable mais comme je n'aime pas tellement utiliser quelque chose que je ne comprend pas, ce serait très sympa si quelqu'un pouvait prendre quelques minutes pour m'expliquer.

    Merci

  2. #2
    Membre émérite Avatar de Cincinnatus
    Homme Profil pro
    Développeur d'applications métier
    Inscrit en
    Mars 2007
    Messages
    593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur d'applications métier
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2007
    Messages : 593
    Par défaut
    Bonjour,
    ça n'est pas du sql, mais des opérations sur les bits.

    Le "truc très long" est une valeur hexadécimale (cf https://rmdiscala.developpez.com/cou...hap1.3.htm#2.5 )

    Le & dans "LogSerial & 0xFFFFFFFF00000000" permet de masquer les bits de poids faible de "LogSerial".
    Le (LogSerial & 0xFFFFFFFF00000000) >> 32 est le décalage à droite sur la valeur résultante.

    Sur un nombre plus simple :
    soit L = 0x111 (0x indique une valeur hexa)
    "(L & 0xFF) >> 3" doit être lu
    (0x111 & 0x00FF) >> 3 : on masque les valeurs supérieures à 0xFF : on ne garde que 0x11 ( = 16 + 1 = 17 en décimal)
    (0x11) >> 3 : on décale les bits à droite trois fois : on "divise par 2, trois fois", donc par 8
    0x002 : 2 en décimal

    Quant au & dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQL = SQL & " FROM_UNIXTIME((LogSerial & 0xFFFFFFFF00000000) >> 32 )AS LogTime, "
    c'est l'opérateur de concaténation du langage de programmation qui génère la requête sql.

    Autrement dit la requête que tu indiques décompose une valeur (LogSerial) en 3 autres valeurs (LogTime, ZoneIdx, LogCommonType).

  3. #3
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 273
    Par défaut
    Bonsoir,

    J'avais également remarqué que dans les valeurs hexadécimales il n'y a que des 0 et des F, je comprend mieux à présent merci

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 21/04/2015, 13h27
  2. Où sont stockés les textes des requêtes SQL ?
    Par vincent.c dans le forum SAGE
    Réponses: 2
    Dernier message: 15/11/2012, 08h02
  3. Afficher les résultats des requêtes SQL
    Par Glauben dans le forum NetBeans
    Réponses: 4
    Dernier message: 04/07/2011, 19h35
  4. [SQL] Gérer les erreurs des requêtes SQL
    Par eagleleader dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/10/2007, 13h28
  5. Pour les experts des forms
    Par EPJSoft dans le forum Delphi
    Réponses: 7
    Dernier message: 10/06/2007, 00h21

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