Ma question est:SQL Server 2008+: Modulo et décimal/numérique type de données
Est-il une opération valide pour utiliser l'opérateur modulo %
en combinaison avec decimal
ou numeric
types de données dans T-SQL.
Il semble fonctionner pour autant que je l'ai testé, mais est-ce réellement un comportement prévu pour decimal
des valeurs comme SELECT 2.0 % 0.4
pour résultat 0.0
et puis-je compter sur cela?
Mon idée était de créer une requête comme ceci:
SELECT itemNumber
FROM item i
JOIN orderItem oi ON i.ID = oi.itemID
WHERE oi.orderID = @orderID
AND oi.amount % i.amount <> 0.0000
j'été surpris que cela semble fonctionner. Est-ce que ce comportement est prévu?
Je m'attendais à ce que cela ne fonctionne que pour les valeurs entières et était prêt à utiliser quelque chose de différent.
Pour l'arrière-plan:
Nous vendons une partie de nos affaires en mètres sous une forme préemballée. Le champ de données de la base de données est une valeur numeric(18,4)
et certaines unités préemballées sont regroupées en valeurs décimales. Maintenant, je dois créer une procédure pour vérifier si cet article vendu est un multiple d'une unité préemballée ou non, déterminez si nous pouvons envoyer une quantité valide d'éléments préemballés de s'il est nécessaire de couper l'article de manière appropriée.
Avec un numérique (18,4) la précision devrait être assez élevé je pense? – Adwaenyth
@Adwaenyth cela dépend de votre environnement, si vous mesurez 'amount' dans tonns - vous devez ajouter plus de chiffres sur le côté droit, si vous utilisez des gramms, je pense, c'est assez – Backs
C'est mètres en fait. – Adwaenyth