Search code examples
sql-servert-sqlsql-server-2008sysobjects

Getting column names from a table


I am trying to get column names for a Given table. So I wrote a query like this:

  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'

The problem is that I have two tables with name 'Admin' but they have different schemas. So when I run this query:

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

I get two records since the table names are same. Is there a way that I caould filter out based on the schema name too?


Solution

  • Using the INFORMATION_SCHEMA tables will be easier and more portable:

    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.