Bel*_*iez 230 sql t-sql sql-server
如何使用SQL Server 2008返回表的列名?即一个表包含这些列 - id,name,address,country,我想将这些作为数据返回.
Gul*_*zim 384
不确定2008版本是否有更简单的方法.
USE [Database Name]
SELECT COLUMN_NAME,*
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'YourTableName' AND TABLE_SCHEMA='YourSchemaName'
Run Code Online (Sandbox Code Playgroud)
小智 106
这是最简单的方法
exec sp_columns [tablename]
Run Code Online (Sandbox Code Playgroud)
Pau*_*vre 31
像这样的东西?
sp_columns @table_name=your table name
Run Code Online (Sandbox Code Playgroud)
spl*_*tne 13
一种方法是查询syscolumns:
select
syscolumns.name as [Column],
syscolumns.xusertype as [Type],
sysobjects.xtype as [Objtype]
from
sysobjects
inner join
syscolumns on sysobjects.id = syscolumns.id
where sysobjects.xtype = 'u'
and sysobjects.name = 'MyTableName'
order by syscolumns.name
Run Code Online (Sandbox Code Playgroud)
小智 9
这似乎比上面的建议容易一些,因为它使用OBJECT_ID()函数来定位表的id.具有该id的任何列都是表的一部分.
SELECT *
FROM syscolumns
WHERE id=OBJECT_ID('YOUR_TABLE')
Run Code Online (Sandbox Code Playgroud)
我通常使用类似的查询来查看我知道的列是否是新版本的一部分.与where子句添加{AND name ='YOUR_COLUMN'}的查询相同.
IF EXISTS (
SELECT *
FROM syscolumns
WHERE id=OBJECT_ID('YOUR_TABLE')
AND name='YOUR_COLUMN'
)
BEGIN
PRINT 'Column found'
END
Run Code Online (Sandbox Code Playgroud)
小智 7
试试这个
select * from <tablename> where 1=2
Run Code Online (Sandbox Code Playgroud)
...............................................
小智 5
我用
SELECT st.NAME, sc.NAME, sc.system_type_id
FROM sys.tables st
INNER JOIN sys.columns sc ON st.object_id = sc.object_id
WHERE st.name LIKE '%Tablename%'
Run Code Online (Sandbox Code Playgroud)
以下内容似乎与上述第一个建议的查询类似,但是有时您必须指定数据库才能使其正常工作。请注意,该查询也应在不指定TABLE_SCHEMA的情况下运行:
SELECT COLUMN_NAME
FROM YOUR_DB_NAME.INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'YOUR_TABLE_NAME' AND TABLE_SCHEMA = 'YOUR_DB_NAME'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
495340 次 |
| 最近记录: |