Les calculs décimaux précis dans SQL Server nécessitent souvent de choisir entre la troncature et l'arrondi. Ce guide détaille les principales différences et montre comment tronquer les valeurs décimales sans arrondir.
Exemple illustratif :
<code class="language-sql">DECLARE @value DECIMAL(18,2); SET @value = 123.456;</code>
SQL Server arrondit automatiquement @value
à 123,46. Bien qu'ils conviennent à de nombreuses applications, il existe des scénarios dans lesquels l'arrondi n'est pas souhaitable, nécessitant une troncature.
Techniques de troncature efficaces
1. Tirer parti de la fonction ROUND :
La fonction ROUND
offre une fonctionnalité subtile mais puissante : un troisième paramètre contrôlant la troncature.
<code class="language-sql">ROUND(123.456, 2, 1);</code>
Un troisième paramètre différent de zéro demande ROUND
de tronquer plutôt que d'arrondir.
2. Utilisation de CAST et CONVERT :
La conversion ou la conversion de la décimale en un type entier tronque directement la partie décimale :
<code class="language-sql">CAST(@value AS INT); CONVERT(INT, @value);</code>
3. Manipulation de chaînes avec SUBSTRING ou LEFT :
Extrayez la partie souhaitée à l'aide de SUBSTRING
ou LEFT
, puis reconvertissez-la en décimal :
<code class="language-sql">SUBSTRING(@value, 1, 4); LEFT(@value, 4);</code>
4. Utilisation de la fonction FLOOR :
La fonction FLOOR
, combinée à la multiplication et à la division, propose une autre méthode de troncature :
<code class="language-sql">FLOOR(@value * 100) / 100;</code>
Cela tronque effectivement à deux décimales. N'oubliez pas d'ajuster le multiplicateur et le diviseur pour différents niveaux de précision.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!