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 :

Tests négatif ou positif


Sujet :

MS SQL Server

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2004
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 282
    Points : 119
    Points
    119
    Par défaut Tests négatif ou positif
    Bonjour,
    Je récupère des valeurs dans une table avec un Select, et je souhaite afficher J+X ou J-X en fonction de la parité de mes valeurs X.
    Comment faire cela ?
    Merci d'avance !

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Vous pouvez tester qu'un nombre est pair avec l'opérateur arithmétique modulo, représenté par % :

    Retourne 0

    Retourne 1

    Exemple d'utilisation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    DECLARE @J INT,
    		@X INT
     
    SELECT @J = 10,
    		@X = 2
     
    SELECT @J + CASE
    		WHEN @X % 2 = 0 THEN -@X -- Pair
    		ELSE @X -- Impair
    	END
    Retourne 8

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    DECLARE @J INT,
    		@X INT
     
    SELECT @J = 10,
    		@X = 1
     
    SELECT @J + CASE
    		WHEN @X % 2 = 0 THEN -@X -- Pair
    		ELSE @X -- Impair
    	END
    Retourne 11

    @++

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2004
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 282
    Points : 119
    Points
    119
    Par défaut
    Elsuket,
    Merci beaucoup pour ces précisions, mais j'ai dit n'importe-quoi
    Je ne voulais pas tester la parité, mais le SIGNE des nombres...
    pourriez-vous m'aider à nouveau ? merci d'avance !

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 50
    Points : 60
    Points
    60
    Par défaut
    Bonjour,
    elsuket t'as donné la réponse, à se demander si tu l'as lu ; car je pense qu'il est à la portée de tout le monde de comprendre que remplacer le test de modulo par un test X > 0 répond à ton besoin.

  5. #5
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Cela fait un petit moment que je n'ai pas fait de mathématiques

    Par contre je ne comprends pas : si vous écrivez J + X, quelle que soit la valeur, positive ou négative, de X, elle est directement additionnée (la soustraction étant un cas particulier d'addition) à J.

    Pouvez-vous être plus précis ?

    @++

  6. #6
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2004
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 282
    Points : 119
    Points
    119
    Par défaut
    Merci Judah de m'expliquer que tester si X > 0 s'écrit X > 0.
    Faire ce test dans un select, j'ai essayé sans succès (voir plus bas).
    Sinon Elsuket désolé j'ai pas été très clair :
    par J + X j'entends : "J + 5" ou "J - 4", avec la lettre "J" telle quelle

    Donc en fait je cherche un moyen d'écrire en propre qqchose comme ça :

    select
    (if X > 0 then 'J + ' + cast (X AS varchar) else 'J ' + cast (X AS varchar))
    from...
    where...

    Voilà, mais je suis plus une quiche en SQL qu'en maths....

  7. #7
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Ca devrait donner quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT CASE
    			WHEN X >= 0 THEN 'J + '
    			ELSE 'J - '
    		END + CAST(X AS VARCHAR)
    @++

  8. #8
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 760
    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 760
    Points : 52 541
    Points
    52 541
    Billets dans le blog
    5
    Par défaut
    Vous pouvez utiliser la fonction SIGN de cette manière :
    SIGN * Y

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

  9. #9
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Je ne connaissais pas cette fonction, merci SQLPro

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    DECLARE @X INT SET @X = 100
    DECLARE @J INT SET @J = 2
     
    SELECT CASE SIGN(@X)
    		WHEN 1 THEN 'J + '
    		WHEN 0 THEN 'J + '
    		ELSE ' J - '
    	END + CAST (ABS(@X) AS VARCHAR)
    @++

  10. #10
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2004
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 282
    Points : 119
    Points
    119
    Par défaut
    Merci à tous,
    Comme je disais je suis une quiche en SQL, j'utilisais une mauvaise syntaxe pour mon Case, et là ça marche impec !

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

Discussions similaires

  1. [MIPS] Négatif vers positif
    Par Tunisiano87 dans le forum Autres architectures
    Réponses: 0
    Dernier message: 12/10/2009, 23h11
  2. Passer un nombre négatif en positif
    Par mauyebo dans le forum Langage
    Réponses: 2
    Dernier message: 09/10/2008, 21h23
  3. Réorganiser les éléments d'un vecteur (élem. négatifs,nuls,positif)
    Par master_turc dans le forum Algorithmes et structures de données
    Réponses: 15
    Dernier message: 26/11/2007, 10h50
  4. Comment convertir un nombre négatif en positif ?
    Par ecobarito dans le forum Débuter
    Réponses: 3
    Dernier message: 01/10/2007, 00h09
  5. Aide formule: passer un nb négatif en positif
    Par chachouu dans le forum Excel
    Réponses: 8
    Dernier message: 07/06/2007, 16h22

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