J'ai un paramètre d'entrée supposons tandis que vous utilisez à l'intérieur Merci d'avance. P> p> @smssessiontimeout = 300 code> p>
Terminer Code>, je veux en faire une valeur négative.
Comme
@smsssessiontimeout = -300 code> p>
5 Réponses :
Multipliez-le par -1
SELECT @SMSSessionTimeout = @SMSSessionTimeout * -1;
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.
préfixe la valeur avec un signe moins.
SET @SMSSessionTimeout = -@SMSSessionTimeout
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/...
Un simple bit ne le coupe-t-il pas? Un peu maladroit, mais pourquoi passer à travers une opération complète d'ajout lorsque vous ne voulez que changer le panneau? P> < / p>
Je pense que la logique ci-dessous fonctionnera parfaitement pour convertir des nombres positifs en négatif.
IF(@SMSSessionTimeout > 0) SET @SMSSessionTimeout = 0 - @SMSSessionTimeout
Si vous devez vous assurer qu'une valeur négative sera produite, vous pouvez utiliser: plus sur ABS ici: https://docs.microsoft.com/en-us/sql/ T-SQL / Fonctions / ABS-Transact-SQL? Vue = SQL-Server-Ver15 P> P>