有关NUMERIC数据列大小的问题

时间:2017-08-25 10:09:29

标签: sql sql-server tsql sql-server-2012

我有一个表,其ID为大小为10的列之一,即NUMERIC(10,0).当我使用函数COL_LENGTH来计算列的大小时,它给出的大小为9另一方面,当我使用相同的函数来计算另一个数据类型列的大小时,它正确地给出了大小。 有没有人知道这背后的原因是什么。

1 个答案:

答案 0 :(得分:0)

COL_LENGTH以字节为单位返回定义的长度(不是精度/比例):

如果您想要精确或缩放使用COLUMNPROPERTY功能:

CREATE TABLE t1(c1 nvarchar(40), c2 NUMERIC(10,0) );  
GO  

SELECT COL_LENGTH('t1','c1'),  
      COLUMNPROPERTY (OBJECT_ID('t1'), 'c1', 'Precision'),
      COL_LENGTH('t1','c2'),
      COLUMNPROPERTY (OBJECT_ID('t1'), 'c2', 'Precision');  

-- OUTPUT:
-- 80         40          9             10
-- bytes                  bytes

<强> Rextester Demo