繁体   English   中英

仅从 SELECT 语句返回列名

[英]Returning only the column names from a SELECT statement

这只是一个懒惰的想法。 我有一个大约有 9 个列名的表。 有什么办法可以使用 SQL 语句只返回列名吗? 通常的方法是写出我的列名

SELECT * FROM tableName; 

语句,但想知道是否可以使用 SQL 语句获取列名。

任何想法将不胜感激。

谢谢你!

SELECT COLUMN_NAME,* 
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'tableName' AND TABLE_SCHEMA='dbo'

应该做

SET FMTONLY ON
SELECT * FROM tablename

打开您的 Microsoft SQL Server Management Studio,在新查询中,只需输入您的表名称并选择它,然后按ALT + F1键,它将提供有关表的所有详细信息

尝试按照 SQL 语句获取列名。

SELECT column_name   
FROM information_schema.columns 
WHERE TABLE_NAME='tableName'

您可以查询syscolumns表以获取表列元数据。

 SELECT [name] AS [Column Name]
FROM syscolumns
WHERE id = (SELECT id FROM sysobjects WHERE  [Name] = 'TableName')

请参阅此查询返回值的图像

在此处输入图片说明

引用自: 如何从 Oracle 中的表中获取列名?

另一种方式

select column_name,* from information_schema.columns where table_name = 'YourTableName' order by ordinal_position

使用 SQL Server xml raw 您可以从任何 sql 查询中获取列名。 替换下面示例中的“select top 1 * from [TABLENAME]”。 查询必须至少返回 1 行数据并记住使用前 1 行。

declare @t1 table (x xml)
declare @t2 table (x xml)
declare @t3 table (x xml)

insert into @t1 select cast( (select top 1 * from [TABLENAME] for xml raw) as xml)
insert into @t2 select y.r.query('.') from @t1 cross apply x.nodes('/row') as y(r)
insert into @t3 select t2.n.value('local-name(.)', 'varchar(max)') from @t2 t cross apply x.nodes('//@*') as t2(n)

select replace (convert (nvarchar, x),'_x0020_', ' ') from @t3

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM