我怎样才能从SQL Server中的表中获取列名?
我想查询一个表的所有列的名称。 我发现如何做到这一点:
- 神谕
- MySQL的
- PostgreSQL的
但是我需要知道: 如何在Microsoft SQL Server (2008在我的情况下)这样做呢?
通过查询信息模式视图 ,您可以获得这些信息。
此示例查询:
SELECT * FROM Northwind.INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = N'Customers'
可以通过所有这些数据库对象:
- CHECK_CONSTRAINTS
- COLUMN_DOMAIN_USAGE
- COLUMN_PRIVILEGES
- 列
- CONSTRAINT_COLUMN_USAGE
- CONSTRAINT_TABLE_USAGE
- DOMAIN_CONSTRAINTS
- DOMAINS
- KEY_COLUMN_USAGE
- 参数
- REFERENTIAL_CONSTRAINTS
- 例程
- ROUTINE_COLUMNS
- SCHEMATA
- TABLE_CONSTRAINTS
- TABLE_PRIVILEGES
- TABLES
- VIEW_COLUMN_USAGE
- VIEW_TABLE_USAGE
- VIEWS
您可以使用存储过程sp_columns,它将返回有关给定表的所有列的信息。 更多信息可以在这里findhttp://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
这将获取所有表中的所有列,按表名称sorting,然后按列名sorting。
select * from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME='tableName'
这比从sys.columns
获得更好,因为它直接显示DATA_TYPE
。
您可以在SQL Server 2008中使用sp_help
。
sp_help <table_name>;
快捷键为上述命令select table name
(突出显示)并按下ALT + F1 。
通过使用这个查询,你可以得到答案:
select Column_name from Information_schema.columns where Table_name like 'table name'
– 这是另一个用于logging大型数据库转换的变体(编辑为 – 删除静态列)
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
– 在左连接中,将c.typereplace为c.xtype以获取varchartypes
您可以编写此查询来获取列名称和所有详细信息,而无需在MySql中使用INFORMATION_SCHEMA:
SHOW COLUMNS FROM database_Name.table_name;
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
SELECT name FROM sys.columns WHERE object_id = OBJECT_ID('TABLE_NAME')
// TABLE_NAME是你的表
这个SO问题是缺less以下方法:
-- 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'
只要运行这个命令
EXEC sp_columns'你的表名'
你可以试试这个。它给出了所有的列名和它们各自的数据types。
desc <TABLE NAME> ;
你可以使用这个查询
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME like N'%[ColumnName]%' and TABLE_NAME = N'[TableName]'
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
SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'name_of_your_table'