如何在SQL SELECT中输出给定的列名

时间:2015-07-20 19:15:34

标签: sql-server

我在SQL Server 2008中工作。我试图在SELECT子句中输出某个列名(在给定表中的许多列中)。这样,我就不必对列名进行硬编码。目前,使用硬编码方法,我有类似的东西:

SELECT
    'name_of_column'
FROM some_table

我知道如何通过INFORMATION_SCHEMA获取所有列的列表,但我只需要一个特定列。怎么办呢?

2 个答案:

答案 0 :(得分:0)

不知道为什么你会这样做,如果你知道列名只是使用查询中的列,无论如何我们说你有一些要求你必须这样做,因为你已经提到它只需要一列你需要你可以做这样的事情......

CREATE PROCEDURE getData
 @TableName   SYSNAME
,@ColumnName  SYSNAME
AS
BEGIN
  SET NOCOUNT ON;
  DECLARE @Sql NVARCHAR(MAX);

SELECT @Sql = N' SELECT ' + QUOTENAME(c.name) + N' FROM ' + QUOTENAME(t.name)
FROM sys.columns c 
INNER JOIN sys.tables t on c.object_id = t.object_id 
WHERE t.name = @TableName
  AND c.name LIKE '%' + @ColumnName + '%'

Exec sp_executesql @Sql 

END

答案 1 :(得分:0)

不确定你到底在寻找什么,但这是我的尝试:

DECLARE @TableName varchar(50) = 'Test'; --change this to match table name 
DECLARE @ColumnName varchar(50) = 'ID'; --change this to match column name you need
BEGIN
    SELECT COLUMN_NAME
     FROM INFORMATION_SCHEMA.COLUMNS
    WHERE TABLE_NAME = @TableName
    AND COLUMN_NAME = @ColumnName;
END