Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Doute sur paramétres du type de donnée "Décimale" ??!

3 réponses
Avatar
News Groups
Bonjour,

Je travaille sous SQL Server 2000 et lors de l'utilisation du type de donnée
"Décimal", je constate que :
- le paramétre Précision est le nombre de chiffre maximum autorisé sur
l'ensemble de la valeur
- le paramétre Echelle est le nombre de chiffre maximum autorisé à droite de
la virgule
exemple : valeur = 4568,523 - la précision est = 7 et l'échelle est = 3.

Hors dans les documentation Microsoft et sur les livres traitant de SQL
Server les définitions des paramétres Précision et Echelle sont inversées :
- Echelle = le nombre de chiffre maximum autorisé sur l'ensemble de la
valeur
- Précision = le nombre de chiffre maximum autorisé à droite de la virgule
Ce qui me parait, vis à vis du sens, plus conforme.
Est-ce un problème de traduction au niveau interface de SQL ?
Qu'elles sont les bonnes définition pour ces paramétres ?!

Merci de répondre à ce doute...

Thierry

3 réponses

Avatar
bruno reiter [MVP]
Precision, Scale, and Length
Precision is the number of digits in a number. Scale is the number of digits to
the right of the decimal point in a number. For example, the number 123.45 has a
precision of 5 and a scale of 2.

The default maximum precision of numeric and decimal data types is 38. In
previous versions of SQL Server, the default maximum was 28.

Length for a numeric data type is the number of bytes used to store the number.
Length for a character string or Unicode data type is the number of characters.
The length for binary, varbinary, and image data types is the number of bytes.
For example, an int data type can hold 10 digits, is stored in 4 bytes, and does
not accept decimal points. The int data type has a precision of 10, a length of
4, and a scale of 0.

When two char, varchar, binary, or varbinary expressions are concatenated, the
length of the resulting expression is the sum of the lengths of the two source
expressions or 8,000 characters, whichever is less.

When two nchar or nvarchar expressions are concatenated, the length of the
resulting expression is the sum of the lengths of the two source expressions, or
4,000 characters, whichever is less.

The precision and scale of the numeric data types besides decimal are fixed. If
an arithmetic operator has two expressions of the same type, then the result has
the same data type with the precision and scale defined for that type. If an
operator has two expressions with different numeric data types, then the rules
of data type precedence define the data type of the result. The result has the
precision and scale defined for its data type.

This table defines how the precision and scale of the result are calculated when
the result of an operation is of type decimal. The result is decimal when:

a.. Both expressions are decimal.


b.. One expression is decimal and the other is a data type with a lower
precedence than decimal.
The operand expressions are denoted as expression e1, with precision p1 and
scale s1, and expression e2, with precision p2 and scale s2. The precision and
scale for any expression that is not decimal is the precision and scale defined
for the data type of the expression.

Operation Result precision Result scale *
e1 + e2 max(s1, s2) + max(p1-s1, p2-s2) + 1 max(s1, s2)
e1 - e2 max(s1, s2) + max(p1-s1, p2-s2) max(s1, s2)
e1 * e2 p1 + p2 + 1 s1 + s2
e1 / e2 p1 - s1 + s2 + max(6, s1 + p2 + 1) max(6, s1 + p2 + 1)


* The result precision and scale have an absolute maximum of 38. When a result
precision is greater than 38, the corresponding scale is reduced to prevent the
integral part of a result from being truncated.

©1988-2000 Microsoft Corporation. All Rights Reserved.




***********************
br

"News Groups" wrote in message
news:3f4b08b9$0$27008$
Bonjour,

Je travaille sous SQL Server 2000 et lors de l'utilisation du type de donnée
"Décimal", je constate que :
- le paramétre Précision est le nombre de chiffre maximum autorisé sur
l'ensemble de la valeur
- le paramétre Echelle est le nombre de chiffre maximum autorisé à droite de
la virgule
exemple : valeur = 4568,523 - la précision est = 7 et l'échelle est = 3.

Hors dans les documentation Microsoft et sur les livres traitant de SQL
Server les définitions des paramétres Précision et Echelle sont inversées :
- Echelle = le nombre de chiffre maximum autorisé sur l'ensemble de la
valeur
- Précision = le nombre de chiffre maximum autorisé à droite de la virgule
Ce qui me parait, vis à vis du sens, plus conforme.
Est-ce un problème de traduction au niveau interface de SQL ?
Qu'elles sont les bonnes définition pour ces paramétres ?!

Merci de répondre à ce doute...

Thierry







Avatar
Fred BROUARD
Attention de se méfier des faux amis en matière de traduction...

MS SQL Server est conforme à la norme SQL en cette matière


--
Frédéric BROUARD - expert SQL, spécialiste : SQL Server / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto: ******************
News Groups a écrit:
Bonjour,

Je travaille sous SQL Server 2000 et lors de l'utilisation du type de donnée
"Décimal", je constate que :
- le paramétre Précision est le nombre de chiffre maximum autorisé sur
l'ensemble de la valeur
- le paramétre Echelle est le nombre de chiffre maximum autorisé à droite de
la virgule
exemple : valeur = 4568,523 - la précision est = 7 et l'échelle est = 3.

Hors dans les documentation Microsoft et sur les livres traitant de SQL
Server les définitions des paramétres Précision et Echelle sont inversées :
- Echelle = le nombre de chiffre maximum autorisé sur l'ensemble de la
valeur
- Précision = le nombre de chiffre maximum autorisé à droite de la virgule
Ce qui me parait, vis à vis du sens, plus conforme.
Est-ce un problème de traduction au niveau interface de SQL ?
Qu'elles sont les bonnes définition pour ces paramétres ?!

Merci de répondre à ce doute...

Thierry







Avatar
Med Bouchenafa [MVP]
>>Hors dans les documentation Microsoft et sur les livres traitant de SQL
Server les définitions des paramétres Précision et Echelle sont inversées





Ce n'est pas le cas dans la documentation officielle (Aide En Ligne)
Voici un extrait :
decimal[(p[, s])] et numeric[(p[, s])]

Valeurs de précision et d'échelle fixes. Si la précision maximale est utilisée, les valeurs doivent
se situer entre - 10^38 +1 et 10^38 - 1. Les synonymes SQL-92 de decimal sont dec et dec(p, s).

p (précision)

Spécifie le nombre maximal de chiffres décimaux qui peuvent être mis à gauche et à droite de la
virgule décimale. La précision doit être une valeur comprise entre 1 et la précision maximale. La
valeur de précision maximale est 38. La valeur de précision par défaut est 18.

s (échelle)

Spécifie le nombre maximal de chiffres décimaux pouvant figurer à droite de la virgule décimale.
L'échelle doit être une valeur comprise entre 0 et p. Elle peut être spécifiée uniquement si la
précision est précisée. Elle est par défaut 0 et par conséquent, 0 <= s <= p. La taille maximale de
stockage varie en fonction de la précision


--
Salutations
Med Bouchenafa
TETRASET
75015 Paris
"News Groups" a écrit dans le message de news:
3f4b08b9$0$27008$
Bonjour,

Je travaille sous SQL Server 2000 et lors de l'utilisation du type de donnée
"Décimal", je constate que :
- le paramétre Précision est le nombre de chiffre maximum autorisé sur
l'ensemble de la valeur
- le paramétre Echelle est le nombre de chiffre maximum autorisé à droite de
la virgule
exemple : valeur = 4568,523 - la précision est = 7 et l'échelle est = 3.

Hors dans les documentation Microsoft et sur les livres traitant de SQL
Server les définitions des paramétres Précision et Echelle sont inversées :
- Echelle = le nombre de chiffre maximum autorisé sur l'ensemble de la
valeur
- Précision = le nombre de chiffre maximum autorisé à droite de la virgule
Ce qui me parait, vis à vis du sens, plus conforme.
Est-ce un problème de traduction au niveau interface de SQL ?
Qu'elles sont les bonnes définition pour ces paramétres ?!

Merci de répondre à ce doute...

Thierry