Arrondissement dans SQL Server?
J'ai écrit un système de pagination pour sql server. et il fonctionne très bien mais je suis en train de retourner combien de pages il y a au total
Donc si il y a 5 enregistrements et 2 enregistrements par page, puis le total est de 3 pages
c'est ce que j'ai
SELECT @TotalPages = ( (SELECT COUNT(*) FROM #TempItems) / @RecsPerPage )
et mes paramètre de sortie est défini comme
@TotalPages AS INT OUT,
Maintenant ça fonctionne 🙂 dans mon test il y a 5 enregistrements et 2 enregistrements par page donc le select ci-dessus renvoie 2, mais son tort il devrait être de 3
C'est parce que son dire 5 /2 = nombre entier de 2... comment arrondir...?
J'ai fatigué de plafond, mais ne pouvait pas le faire fonctionner..
Des idées?
Merci d'avance
OriginalL'auteur Martin | 2010-11-18
Vous devez vous connecter pour publier un commentaire.
Ne vous lancez le numérateur et le dénominateur par le flotteur et puis, à l'aide de Cieling?
Entier opérations donnent toujours des nombres entiers. Essayez ce qui suit -
OriginalL'auteur Roopesh Shenoy
Vous pouvez utiliser entier arithmétique:
(J'ai compris que la formule de nombreuses années (avant il y avait un internet où vous pourriez demander pense de ce genre), et l'ont utilisé de nombreuses fois.)
OriginalL'auteur Guffa
Entier mathématiques n'est pas ronde, il tronque. Changement
@RecsPerPage
être un float au lieu de int, et ensuite utiliserceil
dans votre instruction sql.OriginalL'auteur Donnie
SQL Server donnera toujours un résultat sous forme d'entier lors de la division de deux nombres entiers.
Vous pouvez ajouter un ".0" à la fin de réelles valeurs codées en dur, ou multiplier par "1.0" pour convertir la valeur d'un champ. Si vous voulez arrondir, puis le meilleur moyen que je connaisse est à ajouter 0,5, puis d'appeler la RONDE normale de la fonction. Qui fonctionne parce que ROUND_DOWN(nombre + .5) est toujours la même que ROUND_UP(nombre).
Vous pouvez également manuellement fonte d'un champ à un flotteur, comme d'autres l'ont souligné.
Mais notez que
sera de retour d'une virgule flottante résultat, alors que l'
donnera une entier résultat. Utiliser celle qui fonctionne le mieux pour vous.
Tous ces éléments sont illustrés dans l'exemple ci-dessous:
Ici est une fonction qui va faire des aller-ups pour vous, avec une sélection pour vous montrer les résultats qu'il donne.
OriginalL'auteur JosephStyons
Essayer
OriginalL'auteur Sadhir
Ici, certains même code. La distribution des fonctions garder SQL à partir d'arrondi automatique. Ajuster l'0.00 à la précision que vous voulez.
modifier - l'arrondi correct param. 0
OriginalL'auteur Mark SQLDev
OriginalL'auteur Michael Riley - AKA Gunny
Garder votre formule d'origine, mais vous avez besoin de vérifier pour voir si le reste est > 0, et si oui, ajoutez simplement 1 pour votre résultat.
OriginalL'auteur datagod