我知道我可以通过以下方式访问列属性:
select *
from sysobjects
但是我找不到有关在哪里获取列的类型和类型长度的信息,即:在
FOO VARCHAR(80)
在哪里可以找到元数据表中类型声明的“VARCHAR(80)”部分?
我尝试查看 systypes 表,但其 xtype 值与 sysobjects 表中的 xtype 值不匹配。
*我无权访问用于构建这些表的原始 SQL,也没有任何管理权限。
如果您熟悉 DB2,我正在寻找相当于
select name,
coltype,
length,
from sysibm.syscolumns
where tbname = 'FOO'
最佳答案
你很接近。您可以查看 sys.columns 来获取列。
您可以使用OBJECT_ID=OBJECT_ID('dbo.Foo')
过滤表格。
您可以从sys.columns
获取长度。数据类型位于 user_type_id
字段中。该字段的键位于 sys.types 中。
总的来说,你可以这样做:
select object_NAME(c.object_id), c.name, t.name, c.max_length
from sys.columns c
INNER JOIN sys.types t
ON t.user_type_id = c.user_type_id
顺便说一句,在 SQL Server 中,系统表已被弃用(即 syscolumns
、sysobjects
),建议最佳实践是使用 View ,sys.columns
、sys.objects
等
这将为您提供表、列、数据类型和每个表的最大长度。
关于sql-server - 在哪里可以找到列数据类型的 Sql Server 元数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9179990/