SQL SERVER – Query to Find Column From All Tables of Database

One question came up just a day ago while I was writing SQL SERVER – 2005 – Difference Between INTERSECT and INNER JOIN – INTERSECT vs. INNER JOIN.

How many tables in database AdventureWorks have column name like ‘EmployeeID’?

It was quite an interesting question and I thought if there are scripts which can do this would be great. I quickly wrote down following script which will go return all the tables containing specific column along with their schema name.

USE AdventureWorks
GO
SELECT t.name AS table_name,
SCHEMA_NAME(schema_id) AS schema_name,
c.name AS column_name
FROM sys.tables AS t
INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID
WHERE c.name LIKE '%EmployeeID%'
ORDER BY schema_name, table_name;

In above query replace EmployeeID with any other column name.

SELECT t.name AS table_name,
SCHEMA_NAME(schema_id) AS schema_name,
c.name AS column_name
FROM sys.tables AS t
INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID
ORDER BY schema_name, table_name;

If you want to find all the column name from your database run following script. You can down any condition in WHERE clause to get desired result.

Reference : Pinal Dave (https://blog.sqlauthority.com)

SQL Data Storage, SQL Scripts, SQL Stored Procedure, SQL System Table
Previous Post
SQL SERVER – 2005 – Get Field Name and Type of Database Table
Next Post
SQL SERVER – EXCEPT Clause in SQL Server is Similar to MINUS Clause in Oracle

Related Posts

191 Comments. Leave new

  • I know only DBMS concepts
    give me tips to know SQL

    Reply
  • Which one is best, * or Specified column names in a Select Query?Why?

    Reply
    • SELECT col_list is best. Because it will not break even if new columns are added to the base table

      Reply
  • this just saved me from digging through a few thousand lines of
    code. Thanks :)

    Reply
  • this just saved me from digging through a few thousand lines of source code. Thanks.

    Reply
  • Thanks so much! Your blog has been very helpful to me lately! :)

    Reply
  • I just wanted to finally say thanks – every time I google a tsql question, whenever your face appears, I follow the link knowing I’ll get good, solid, reliable advice. You sir, give excellent nuggets and are quite an asset to the internet at large. Thank you.

    Reply
  • Pinal Sir, the 2nd best part of your blog posts is the large no. of comments, through which one can learn different ideas.
    Thanks for providing us such a useful blog !!!

    Reply
  • I have a large database and I want to determine how many tables have a specific column with a specific value in it.

    Reply
  • This works great and I just tried it with date and the only thing I can think of is data type…such as date datetime or smalldatetime
    how would I add a column for the format of the date ?

    Reply
  • Johirul Islam
    May 18, 2012 3:58 pm

    here is the result

    SELECT Table_Schema, Table_Name, Column_Name, Data_Type
    FROM information_schema.columns
    WHERE table_name in ( select name from sys.objects
    where type = ‘U’ )
    and column_name like ‘%EmployeeID%’
    order by table_schema, table_name

    Reply
  • Thanks Johirul that really helped.

    Reply
  • Hi,

    Can someone help me with a script that looks at how many tables in oracle schema that have column name like ‘EmployeeID’?

    Actual I need a very same script that works like the one below but in Oracle aqua, not in ms server.

    SELECT t.name AS table_name,
    SCHEMA_NAME(schema_id) AS schema_name,
    c.name AS column_name
    FROM sys.tables AS t
    INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID
    WHERE c.name LIKE ‘%EmployeeID%’
    ORDER BY schema_name, table_name;

    Thanks in advance

    Reply
  • thank you works like a charm

    Reply
  • Kamakshi Suram
    June 12, 2012 1:12 pm

    Hi Dave,

    I have a question.
    Is it possible for you to get data for particulat value.
    For Eg:
    I have a table’ senario1_SRC ‘with 3 columns. col1, col2, col3.

    From the below query i will get ouput as ‘col1′

    select top 1 column_name from information_schema.columns where table_name=’senario1_SRC’

    Next I need the data from above resulted columns.

    Like below
    SELECT
    (select top 1 column_name from information_schema.columns where table_name=’senario1_SRC’)

    FROM senario1_SRC

    If I fire the above query I should get data of the column.

    But I am getting col1 as result

    Can you please help me on above issue.

    Reply
  • Brilliant thank you, I used this to find the junction table for two columns in a very large database I was not familiar with by changing the WHERE clause to:

    WHERE c.name LIKE ‘%FIRSTCOLUMN%’
    OR c.name LIKE ‘%SECONDCOLUMN%’

    Reply
  • thank u sir.

    Reply
  • Hello, I am having problems. I need to bring up two different data. Like for example Title and all the pages less then 250 and only those two how can I do it. The table is called books.

    Reply
  • Is there an equivalent Query for an IBM DB2 database?

    Reply
  • I have several tables in a database, which all start with the name Products and I would like to be able to do a search for all ‘part numbers’, and all ‘descriptions’ (which are both columns contained in all of the databases) and then display all of the information in a single table or view.

    Reply
  • Hello sir,

    If there are 50 columns in a table and i want display only 48 columns , how it can be done without writing the 48 columns in select query. Is there any way to find this? Please reply me. [email removed]

    Reply

Leave a ReplyCancel reply

Exit mobile version