我在SQL Server 2008中工作。我试图在SELECT
子句中输出某个列名(在给定表中的许多列中)。这样,我就不必对列名进行硬编码。目前,使用硬编码方法,我有类似的东西:
SELECT
'name_of_column'
FROM some_table
我知道如何通过INFORMATION_SCHEMA
获取所有列的列表,但我只需要一个特定列。怎么办呢?
答案 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