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