从表中获取列名称

时间:2011-10-07 15:23:45

标签: sql-server tsql sql-server-2008 sysobjects

我正在尝试获取Given表的列名。所以我写了一个这样的查询:

  SELECT   sc.Name
   FROM     Asdim.dbo.sysobjects so
            INNER JOIN Asdim.dbo.syscolumns sc ON so.id = sc.id
            INNER JOIN Asdim.dbo.systypes st ON sc.xtype = st.xusertype
   WHERE    so.Name = 'Admin'

问题是我有两个名为'Admin'的表,但它们有不同的模式。所以当我运行这个查询时:

SELECT * FROM Asdim.dbo.sysobjects
WHERE name LIKE 'Admin'

由于表名相同,我得到两条记录。有没有办法根据模式名称过滤出来?

1 个答案:

答案 0 :(得分:2)

Using the INFORMATION_SCHEMA表将更容易,更便携:

SELECT c.column_name
  FROM information_schema.columns c
 WHERE c.table_name = 'Admin' and c.table_schema = 'SCHEMA'

More info on INFORMATION_SCHEMA.COLUMNS