web-dev-qa-db-ja.com

SQL Serverのテーブルから列名を取得する方法を教えてください。

テーブルのすべての列の名前を問い合わせたいのですが。私はこれを行う方法を見つけました:

しかし、私は知る必要があります: どのようにこれを行うことができますMicrosoft SQL Server(私の場合2008)?

587
odiseh

情報スキーマビュー を照会することで、この情報を入手できます。

このサンプルクエリ:

SELECT *
FROM Northwind.INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = N'Customers'

これらすべてのDBオブジェクトに対して作成できます。

718
anon

特定のテーブルのすべてのカラムに関する情報を返すストアドプロシージャsp_columnsを使用できます。より多くの情報はここで見つけることができます http://msdn.Microsoft.com/ja-jp/library/ms176077.aspx

SQLクエリでも可能です。このようないくつかのことが役立ちます -

SELECT * FROM sys.columns WHERE object_id = OBJECT_ID('dbo.yourTableName') 

またはバリエーションは次のようになります。

SELECT   o.Name, c.Name
FROM     sys.columns c 
         JOIN sys.objects o ON o.object_id = c.object_id 
WHERE    o.type = 'U' 
ORDER BY o.Name, c.Name

これにより、すべてのテーブルからすべての列が取得され、テーブル名順、次に列名順になります。

180
Arnkrishn
select *
from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME='tableName'

sys.columnsが直接表示されるので、これはDATA_TYPEから取得するよりも優れています。

134
Limin

SQL Server 2008ではsp_helpを使用できます。

sp_help <table_name>;

上記のコマンドのキーボードショートカット:テーブル名を選択(ハイライト表示)してを押す ALT+F1

51
mr_eclair

このクエリを使用すると、答えが得られます。

select Column_name 
from Information_schema.columns 
where Table_name like 'table name'
42
KuldipMCA

MySqlでINFORMATION_SCHEMAを使用せずにカラム名とすべての詳細を取得するためにこのクエリを書くことができます。

SHOW COLUMNS FROM database_Name.table_name;
29
Sachin Parse

- これは、変換のために大規模データベースを文書化するために使用されるもう1つのバリエーションです(--remove static columnsに編集されました)

SELECT o.Name                   as Table_Name
     , c.Name                   as Field_Name
     , t.Name                   as Data_Type
     , t.length                 as Length_Size
     , t.prec                   as Precision_
FROM syscolumns c 
     INNER JOIN sysobjects o ON o.id = c.id
     LEFT JOIN  systypes t on t.xtype = c.xtype  
WHERE o.type = 'U' 
ORDER BY o.Name, c.Name

- 左結合では、varchar型を取得するためにc.typeがc.xtypeに置き換えられます。

24
Doc
SELECT name
FROM sys.columns
WHERE object_id = OBJECT_ID('TABLE_NAME')

// TABLE_NAMEはあなたのテーブルです

18
bstricks
SELECT column_name, data_type, character_maximum_length, table_name,ordinal_position, is_nullable 
FROM information_schema.COLUMNS WHERE table_name LIKE 'YOUR_TABLE_NAME'
ORDER BY ordinal_position
15
Petko Petkov

これを試すことができます。これにより、すべての列名とそれぞれのデータ型がわかります。

desc <TABLE NAME> ;
11
ishaan arora

このSO質問には、次のアプローチがありません。

-- List down all columns of table 'Logging'
select * from sys.all_columns where object_id = OBJECT_ID('Logging')
11
NeverHopeless

与えられたtable実表であるかどうかをチェックします。

SELECT 
    T.TABLE_NAME AS 'TABLE NAME',
    C.COLUMN_NAME AS 'COLUMN NAME'
FROM INFORMATION_SCHEMA.TABLES T
INNER JOIN INFORMATION_SCHEMA.COLUMNS C ON T.TABLE_NAME=C.TABLE_NAME
    WHERE   T.TABLE_TYPE='BASE TABLE'
            AND T.TABLE_NAME LIKE 'Your Table Name'
9
Luv

このコマンドを実行するだけです

EXEC sp_columns 'Your Table Name'
9
Hardeep Singh

あなたはこのクエリを使用することができます

SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME like N'%[ColumnName]%' and TABLE_NAME = N'[TableName]'
5
reza akhlaghi
SELECT c.Name 
FROM sys.columns c
JOIN sys.objects o ON o.object_id = c.object_id
WHERE o.object_id = OBJECT_ID('TABLE_NAME')
ORDER BY c.Name

間違いなくもっと直感的なもう1つのオプションは、次のとおりです。

SELECT [name] 
FROM sys.columns 
WHERE object_id = OBJECT_ID('[yourSchemaType].[yourTableName]') 

これにより、すべての列名が単一の列に表示されます。他のメタデータに関心がある場合は、SELECT STATEMENT TO SELECT *を編集して変更できます。

3
Samuel Nde
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'name_of_your_table'
2
onavascuez