8
votes

Comment changer de valeur positive à la négative

J'ai un paramètre d'entrée xxx

supposons @smssessiontimeout = 300

tandis que vous utilisez à l'intérieur Terminer , je veux en faire une valeur négative. Comme @smsssessiontimeout = -300

Merci d'avance.


0 commentaires

5 Réponses :


31
votes

Multipliez-le par -1

SELECT @SMSSessionTimeout = @SMSSessionTimeout * -1;


4 commentaires

J'adore la multiplication par -1 astuce. L'utilisation de moins aussi très pratique pour les dates. par exemple. Daadd (jour, -1, getDate ())


Y a-t-il un sens plus opposé de «absolu» de le faire .... Et si vous devez exécuter un SP à nouveau, puis retournez à A + .....


@Jefforris renvoie Anthony Faulo Réponse pour la manière absolue


La réponse de la Faull est également sensible pour revenir négatif à positif. Mais vous pouvez vérifier à l'avance si la valeur est toujours positive avant de convertir.



12
votes

préfixe la valeur avec un signe moins.

SET @SMSSessionTimeout = -@SMSSessionTimeout


2 commentaires

Je sais que c'est pratiquement la même chose que la vôtre, mais j'utilise ensemble @smsssessionTimeout = (0 - @smsSsessionTimeout); pour la lisibilité :)


C'est la solution présentée dans la documentation à Docs.Microsoft.com/en-us/sql/t-sql/Language-Elements/...



1
votes

Un simple bit ne le coupe-t-il pas? XXX

Un peu maladroit, mais pourquoi passer à travers une opération complète d'ajout lorsque vous ne voulez que changer le panneau? < / p>


0 commentaires

3
votes

Je pense que la logique ci-dessous fonctionnera parfaitement pour convertir des nombres positifs en négatif.

IF(@SMSSessionTimeout > 0)
   SET @SMSSessionTimeout = 0 - @SMSSessionTimeout


0 commentaires

1
votes

Si vous devez vous assurer qu'une valeur négative sera produite, vous pouvez utiliser: xxx

plus sur ABS ici: https://docs.microsoft.com/en-us/sql/ T-SQL / Fonctions / ABS-Transact-SQL? Vue = SQL-Server-Ver15


0 commentaires