Sunteți pe pagina 1din 2

A precisão é o número de dígitos em um número.

A escala é o número de dígitos à


direita da casa decimal em um número. Por exemplo, o número 123,45 tem uma
precisão de 5 e uma escala de 2.

No SQL Server, a precisão máxima padrão de tipos de dados numeric e decimal é 38.
Em versões anteriores do SQL Server, o máximo padrão é 28.

O comprimento de um tipo de dados numérico é o número de bytes usado para


armazenar o número. Comprimento de uma cadeia de caracteres ou tipo de dados de
Unicode é o número de caracteres. O comprimento dos tipos de dados binary,
varbinarye image é o número de bytes. Por exemplo, um tipo de dados int pode conter
10 dígitos, é armazenado em 4 bytes e não aceita casas decimais. O tipo de dados int
tem uma precisão de 10, um comprimento de 4 e uma escala de 0.

Quando duas expressões char, varchar, binary ou varbinary são concatenadas, o


comprimento da expressão resultante é a soma dos comprimentos das duas expressões
de origem ou 8.000 caracteres, o que for menor.

Quando duas expressões nchar ou nvarchar são concatenadas, o comprimento da


expressão resultante é a soma dos comprimentos das duas expressões de origem ou
4.000 caracteres, o que for menor.

Quando duas expressões com o mesmo tipo de dados mas com comprimentos diferentes
são comparados usando UNION, EXCEPT ou INTERSECT, o comprimento resultante
é o comprimento máximo das duas expressões.

A precisão e a escala dos tipos de dados numéricos além de decimal são fixos. Se um
operador aritmético tiver duas expressões do mesmo tipo, o resultado terá o mesmo tipo
de dados com precisão e escala definidas para esse tipo. Se um operador aritmético tiver
duas expressões com tipos de dados numéricos diferentes, a regras de precedência do
tipo de dados definirão os tipos de dados do resultado. O resultado terá a precisão e a
escala definidas para seu tipo de dados.

A tabela a seguir define como a precisão e a escala do resultado são calculadas quando o
resultado de uma operação é do tipo decimal. O resultado será decimal se uma das
seguintes condições for verdadeira:

Ambas as expressões são decimal.


Uma expressão é decimal e a outra é um tipo de dados com uma precedência
inferior a decimal.

As expressões de operandos são indicadas como expressão e1, com precisão p1 e escala
s1, e expressão e2, com precisão p2 e escala s2. A precisão e a escala de qualquer
expressão que não seja decimal serão aquelas definidas para o tipo de dados da
expressão.

Escala de
Operação Precisão de resultado
resultado*
máx(s1, s2) + máx (p1-s1, p2-
e1 + e2 máx(s1, s2)
s2) + 1
máx(s1, s2) + máx(p1-s1, p2-
e1 - e2 máx(s1, s2)
s2) + 1
e1 * e2 p1 + p2 + 1 s1 + s2
p1 - s1 + s2 + máx(6, s1 + p2 máx(6, s1 + p2 +
e1 / e2
+ 1) 1)
e1 { UNION | EXCEPT | máx(s1, s2) + máx(p1-s1, p2-
máx(s1, s2)
INTERSECT } e2 s2)
mín(p1-s1, p2 -s2) + máx(
e1 % e2 máx(s1, s2)
s1,s2 )

* A precisão e a escala de resultado têm um máximo absoluto de 38. Se a precisão de


resultado for maior que 38, a escala correspondente será reduzida para evitar que
alguma parte do resultado seja truncada.

S-ar putea să vă placă și