我知道我可以通过以下方式访问列属性:
select * from sysobjects
然而,我找不到关于在哪里获取列的类型和类型长度的信息,即:in
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获取长度.数据类型在system_type字段中.该字段的键位于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.system_type_id = c.system_type_id
另外,在sql Server中,不建议使用系统表(即syscolumns,sysobjects),建议将其替换为sys.columns,sys.objects等最佳做法.
这将为您提供每个表的Table,列,数据类型和maxlength.