Sql server 2008 使用SQL Server 2008 R2时,如何在结果网格中返回数据库列名?
我有一个查询,它返回一个表中多个表中的所有列,但是我想确定哪些列名属于哪个表。有没有办法把这些结果放在结果表上Sql server 2008 使用SQL Server 2008 R2时,如何在结果网格中返回数据库列名?,sql-server-2008,Sql Server 2008,我有一个查询,它返回一个表中多个表中的所有列,但是我想确定哪些列名属于哪个表。有没有办法把这些结果放在结果表上 SELECT table_name=sysobjects.name, column_name=syscolumns.name, datatype=systypes.name, length=syscolumns.length FROM sysobjects JOIN syscolumns ON sysobjects.id = sy
SELECT table_name=sysobjects.name,
column_name=syscolumns.name,
datatype=systypes.name,
length=syscolumns.length
FROM sysobjects
JOIN syscolumns ON sysobjects.id = syscolumns.id
JOIN systypes ON syscolumns.xtype=systypes.xtype
WHERE sysobjects.xtype='U'
ORDER BY sysobjects.name,syscolumns.colid
您需要更多信息吗?您可以使用信息\u SCHEMA.COLUMNS视图:
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_CATALOG='your database name' AND
TABLE_NAME='your table name'
你就不能用:
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
这将为您提供以下信息:
TABLE_CATALOG ,
TABLE_SCHEMA ,
TABLE_NAME ,
COLUMN_NAME ,
ORDINAL_POSITION ,
COLUMN_DEFAULT ,
IS_NULLABLE ,
DATA_TYPE ,
CHARACTER_MAXIMUM_LENGTH ,
CHARACTER_OCTET_LENGTH ,
NUMERIC_PRECISION ,
NUMERIC_PRECISION_RADIX ,
NUMERIC_SCALE ,
DATETIME_PRECISION ,
CHARACTER_SET_CATALOG ,
CHARACTER_SET_SCHEMA ,
CHARACTER_SET_NAME ,
COLLATION_CATALOG ,
COLLATION_SCHEMA ,
COLLATION_NAME ,
DOMAIN_CATALOG ,
DOMAIN_SCHEMA ,
DOMAIN_NAME
从SQLServer2005开始,您不应该再使用sysobjects视图-您应该使用sys schema中的catalog视图-sys.tables、sys.columns等等forth@Kamil-对不起。我不熟悉这个。我是否简单地用相关的表名等替换sysobjects等?否。sysobjects是存储表数据和syscolumns-column数据的系统表,包括表名和列名。但看起来我的大脑需要更新,因为获取数据的方法已经过时,在SQLServer2008中不推荐使用。你执行了SQL吗?这将返回您所需的所有内容。@Kamil-是的。谢谢。@Radke-我收到错误消息Msg 4104,16级,状态1,第4行多部分标识符KUpdate无法绑定。为什么在FROM和INFORMATION_SCHEMA.COLUMN之间留一个空格?没有原因,只是从我使用的脚本中复制和粘贴。很高兴知道为什么它值得投反对票。