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

MS SQL Server Discussion :

Gestion du type INT


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de LhIaScZkTer
    Inscrit en
    Mai 2004
    Messages
    564
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2004
    Messages : 564
    Par défaut Gestion du type INT
    Bonjour à tous,

    J'ai un souci dans la gestion de mes INT pour SQL-Server 1 est égal à 01, 001, 0001 ...

    Donc si je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT COUNT(*) as LigneFacture
    FROM MaTable
    WHERE maFacture = 1
    C'est la même chose que ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT COUNT(*) as LigneFacture
    FROM MaTable
    WHERE maFacture = 001
    Or dans MySQL je n'ai pas ce problème, ces mêmes requêtes ne renvoient pas le même résultat. Quelqu'un pourrait m'expliquer c'est quoi le problème

  2. #2
    Membre Expert

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Août 2007
    Messages : 1 216
    Par défaut
    un integer représentant un nombre, effectivement 1 = 01 = 001.
    Les zéros de gauche ne sont pas significatifs.

  3. #3
    Membre éclairé Avatar de LhIaScZkTer
    Inscrit en
    Mai 2004
    Messages
    564
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2004
    Messages : 564
    Par défaut
    Salut Ptit_Dje et merci pour ton aide

    Mais alors comment je fais moi pour gérer ça ... Limite là je comprend pas...

    Comment je vais gérer mes numéros de factures... Je vais pas devoir passer par un varchar quand même, c'est le comble

    Je testerais sur oracle et postgres voir si j'ai le droit à la même histoire...

    Quel solutions puis-je appliquer alors ?

  4. #4
    Membre Expert

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Août 2007
    Messages : 1 216
    Par défaut
    Simplement utiliser des nombres qui sont de 1 à x.... en utilisant par exemple la propriété identity.

    1 != 2 != 3 ....

    Quel intéret de préfixer un nombre de 0 ?!
    Qu'espéreriez vous comme résultat de l'addition suivante par exemple : 001 + 000001 ? 2 ? ou alors 001000001 ?

    Oui si vous utilisez du varchar '1' != '01', cependant je n'en vois pas l'intéret ici.

  5. #5
    Membre éclairé Avatar de LhIaScZkTer
    Inscrit en
    Mai 2004
    Messages
    564
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2004
    Messages : 564
    Par défaut
    L'intérêt il faudrait le demander aux comptables de ma boîte ...

    Et pour le 001 + 000001 = 2 évidemment puisque on travaille sur des INT et que la valeur 000001 est équivalent à 1. Par contre ce n'est pas la même chose...
    Cela veut quand on fera un select :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Select count(*) as cpt
    from matable
    where monChiffre = 001
    Il prendra tes 1 et 000001 et 0001 ...

    Alors pourquoi ne pas faire pareil avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select 1.000000000 + 0
    C'est comme si à l'insertion il enlevait automatiquement les espaces en début et fin de ligne...

    Je ne comprend pas la logique.

  6. #6
    Membre Expert Avatar de Jinroh77
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2006
    Messages
    1 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2006
    Messages : 1 964
    Par défaut
    La logique est pourtant simple, tu utilises un type de données int, integer, nombre entier.
    Or pour un nombre entier, 01 = 0000001 = 1.

    Dans ton champ int, tu auras du mal à trouver une valeur à 0001 dans tout SGBD qui se respecte.

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

Discussions similaires

  1. [Hibernate] Pb avec type int
    Par raj dans le forum Hibernate
    Réponses: 1
    Dernier message: 31/03/2006, 21h10
  2. Réponses: 3
    Dernier message: 23/02/2006, 09h37
  3. Gestion des types de variables en Assembleur
    Par AsmCode dans le forum Assembleur
    Réponses: 13
    Dernier message: 17/10/2005, 20h34
  4. Réponses: 9
    Dernier message: 06/07/2005, 14h20
  5. GEstion des types! Besoin d'aide il me manque quelques trucs
    Par popogendarme dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 03/02/2005, 18h56

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