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 !
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 !
Bonjour,
Vous pouvez tester qu'un nombre est pair avec l'opérateur arithmétique modulo, représenté par % :
Retourne 0
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT 962 % 2
Retourne 1
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT 961 % 2
Exemple d'utilisation :
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 = 2 SELECT @J + CASE WHEN @X % 2 = 0 THEN -@X -- Pair ELSE @X -- Impair END
Retourne 11
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
@++
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 !
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.
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 ?
@++
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....
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)
Vous pouvez utiliser la fonction SIGN de cette manière :
SIGN * Y
A +
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)
Merci à tous,
Comme je disais je suis une quiche en SQL, j'utilisais une mauvaise syntaxe pour mon Case, et là ça marche impec !
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager