查询数据长度的列定义 - SQL 服务器

Querying Column Definition for Data Length - SQL Server

我希望生成一个数据库的所有表、列和数据类型的列表。

此查询将提供除数据类型长度之外的所有信息:

SELECT t.name AS TableName,
       c.name AS ColumnName,
       y.name AS DataType
FROM sys.tables AS t
    JOIN sys.columns AS c ON t.object_id = c.object_id
    JOIN sys.types AS y ON y.user_type_id = c.user_type_id
WHERE t.name = 'Tablename';

但对于数据类型为 varcharnvarchar 的列,我还想查看每个列的最大限制。

例如,如果 ColumnA 是 varchar(100) - 我在哪里可以找到数据库中的 100 限制?到目前为止,我找不到该信息的存储位置。

谢谢,

sys.columns 有一个 属性 叫做 max_length:

SELECT 
    t.name AS TableName,
    c.name AS ColumnName,
    c.max_length,
    y.name AS DataType
FROM
    sys.tables AS t
JOIN 
    sys.columns AS c ON t.object_id = c.object_id
JOIN 
    sys.types AS y ON y.user_type_id = c.user_type_id
WHERE 
    t.name = 'Tablename';

有关详细信息,请参阅 official MS documentation on sys.columns