Estou tentando entender melhor os tipos numéricos no SQL e li que o tipo decimal sempre exigirá 17 bytes. No entanto, o MS Docs lista uma tabela indicando a quantidade de espaço usado depende da precisão do decimal. Então eu tentei testá-lo usando a datalength
função.
create table tbl_TestDec(dec1 decimal(19,4), dec2 decimal(20,4), dec3 decimal(9,4))
insert into tbl_TestDec
select 1, 1, 1
select datalength(dec1), datalength(dec2), datalength(dec3) from tbl_TestDec
Isso produz:
5 5 5
Eu estava esperando um 9 13 5
ou outro 17 17 17
. Estou usando o SQL Server 2005. Todos os decimais são vardecimais ou estou entendendo mal a função de comprimento de dados?