PRECISION LENGTH`有什么区别?

What is the difference between PRECISION LENGTH`?

我正在阅读 exec sp_columns 命令的输出,有 2 列我无法理解 PRECISIONLENGTH

我刚刚创建了以下 table

如果我没记错的话,quantity列是数值型INTENGER数据类型,即该列可以存储-2,147,483,648到[=18=之间的数字]

这个信息正确吗?

但是如果我执行

exec sp_columns Books;

Precision:我认为是列允许的字符数,即-2.1m和+2.1m之间最多10个字符

但我不明白为什么 LENGTH 列显示 4.

CREATE TABLE Books
(
    title VARCHAR(10), -- Maximum length up to 10 characters example 'ABCDFGHIJK'
    author VARCHAR(10),-- Maximum length up to 10 characters example 'ABCDFGHIJK'
    quantity INTEGER   -- ?
);
exec sp_columns Books;

INSERT INTO Prueba.dbo.Books
    (title,author,quantity)
VALUES
    ('Example A', 'A', 1),
    ('Example B', 'B', 12),
    ('Example C', 'C', 123),
    ('Example D', 'D', 123467890),
    ('Example E', 'E', 1234678901);

什么LENGTH代表它定义在documentation:

Column name Data type Dscription
LENGTH int Transfer size of the data.1

1 For more information, see the Microsoft ODBC documentation*.

*文档不包含 link 他们具体指的是 Microsoft ODBC 文档,所以遗漏不是我的

int 的大小为 4 个字节,因此该列在 sys.sp_columns 中定义了 4LENGTH