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

Développement SQL Server Discussion :

Opérateurs logiques <> incompréhensibles [2008R2]


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Avatar de alheuredudejeuner
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2005
    Messages : 376
    Billets dans le blog
    4
    Par défaut Opérateurs logiques <> incompréhensibles
    Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            @Poids decimal
            DECLARE @PoidsDeCalcul int
     
            if @Poids > 0 and @Poids <= 1 SET @PoidsDeCalcul = 1;
            if @Poids > 1 and @Poids <= 2 SET @PoidsDeCalcul = 2;
    pour @poids à 0,5 @PoidsDeCalcul =0 ;
    pour @poids à 1 @PoidsDeCalcul =1 ;
    pour @poids à 1,5 @PoidsDeCalcul =1 ;

    Qu'est-ce que je ne fait pas comme il faut ?

    cordialement

  2. #2
    Invité
    Invité(e)
    Par défaut
    C'est votre déclaration de type qui est incorrect, vous ne précisez pas la précision ni l'échelle, donc par défaut votre décimal correspond à un decimal(18,0) : soit 18 chiffres significatifs et 0 décimal !!
    https://msdn.microsoft.com/fr-fr/lib...ql.120%29.aspx
    D'où :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    DECLARE @Poids decimal
    set @Poids = 0.5
    select @Poids 
    ---------------------------------------
    1
     
    (1 row(s) affected)
    En modifiant le type, tout rentre dans l'ordre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    DECLARE @Poids decimal(10,1)
    set @Poids = 0.5
    select @Poids 
     
    --------------------------------------
    0.5
     
    (1 row(s) affected)

  3. #3
    Membre chevronné
    Avatar de alheuredudejeuner
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2005
    Messages : 376
    Billets dans le blog
    4
    Par défaut mais alors a quoi sert le numeric ?
    Bonjour

    Mais alors a quoi sert le numeric ? dans quel cas on utilise l'un ou l'autre ?

    cordialement

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par alheuredudejeuner Voir le message
    Mais alors a quoi sert le numeric ? dans quel cas on utilise l'un ou l'autre ?
    Je ne suis pas bien sûr de comprendre ta question.
    L’article dont j'ai fourni la référence plus haut, stipule que DECIMAL et NUMERIC sont équivalents, donc même usage, même intérêt, même désintérêt.

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 999
    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 999
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par alheuredudejeuner Voir le message
    Bonjour

    Mais alors a quoi sert le numeric ? dans quel cas on utilise l'un ou l'autre ?

    cordialement
    À l'origine dans la norme SQL il y avait une différences en terme de précision entre le NUMERIC et le décimal. Voici le texte de la norme de 2003 (encore valable à ce jour) :
    "
    20) For the <exact numeric type>s DECIMAL and NUMERIC:
    a) The maximum value of <precision> is implementation-defined. <precision> shall not be greater than
    this value.
    b) The maximum value of <scale> is implementation-defined. <scale> shall not be greater than this
    maximum value.
    21) NUMERIC specifies the data type exact numeric, with the decimal precision and scale specified by the
    <precision> and <scale>.
    22) DECIMAL specifies the data type exact numeric, with the decimal scale specified by the <scale> and the
    implementation-defined decimal precision equal to or greater than the value of the specified <precision>.

    "
    SQL Server à implémenté les deux avec la même précision, ce qui est parfaitement normatif !

    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/ * * * * *

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 04/08/2006, 15h47
  2. [EL] El et opérateur logique
    Par LeXo dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 20/07/2006, 21h28
  3. Opérateurs logiques en C
    Par bandit boy dans le forum C++Builder
    Réponses: 6
    Dernier message: 19/07/2006, 13h16
  4. Opérateurs logiques: solution plus simple?
    Par p0Kep0K dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/04/2006, 15h48
  5. [VBA] Condition - opérateurs logiques
    Par Virgile59 dans le forum Access
    Réponses: 6
    Dernier message: 07/10/2005, 10h22

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