回答:
情報スキーマビューにクエリを実行することで、この情報などを取得できます。
このサンプルクエリ:
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = N'Customers'
これらすべてのDBオブジェクトに対して作成できます。
Nortwind.
...)
SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = N'tableName';
これは私にとってはうまくいく
TABLE_SCHEMA = '?' AND TABLE_NAME = '?'
localhost を使用していて、同じ名前で異なるデータベースに複数のテーブルがあるため、使用する必要がありました。
特定のテーブルのすべての列に関する情報を返すストアドプロシージャsp_columnsを使用できます。詳細については、http://msdn.microsoft.com/en-us/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
これにより、すべてのテーブルからすべての列が取得され、テーブル名、列名の順に並べられます。
select *
from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME='tableName'
これは直接sys.columns
表示DATA_TYPE
されるので、取得するよりも優れています。
AND TABLE_SCHEMA = 'schemaName'
は、WHERE
句を追加します。
JOIN sys.types t on c.system_type_id = t.system_type_id
および追加t.name
して、各列名の横にあるタイプも取得できます。
このクエリを記述して、MySqlでINFORMATION_SCHEMAを使用せずに列名とすべての詳細を取得できます。
SHOW COLUMNS FROM database_Name.table_name;
--This is another variation used to document a large database for conversion (Edited to --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
--In the left join, c.type is replaced by c.xtype to get varchar types
このSOの質問には、次のアプローチが欠けています。
-- List down all columns of table 'Logging'
select * from sys.all_columns where object_id = OBJECT_ID('Logging')
指定された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'
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
回答の要約
私はさまざまな答えとこれを行う方法を見ることができますが、これには問題があり、それがobjective
です。
はい、目的。only know
あなたが使用できる列名にしたい場合
SELECT * FROM my_table WHERE 1=0
or
SELECT TOP 0 * FROM my_table
しかし、use
これらの列をどこかにしたい場合、または単にmanipulate
それらを言う場合は、上記の簡単なクエリは役に立たないでしょう。使用する必要があります
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = N'Customers'
同様の列が必要な特定の列を知るもう1つの方法
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME like N'%[ColumnName]%' and TABLE_NAME = N'[TableName]'
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'name_of_your_table'
SELECT * FROM my_table WHERE 1=0