查询数据长度的列定义 - 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';
但对于数据类型为 varchar
或 nvarchar
的列,我还想查看每个列的最大限制。
例如,如果 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
我希望生成一个数据库的所有表、列和数据类型的列表。
此查询将提供除数据类型长度之外的所有信息:
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';
但对于数据类型为 varchar
或 nvarchar
的列,我还想查看每个列的最大限制。
例如,如果 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