Sql server 2005 列名作为select中的变量
我想实现这样的功能,我如何才能做到这一点Sql server 2005 列名作为select中的变量,sql-server-2005,Sql Server 2005,我想实现这样的功能,我如何才能做到这一点 DECLARE @filterByDate VARCHAR(20) IF(@filterByDate = 'expectedDate') SET @filterByDate = 'ExpectedStartDate' ELSE SET @filterByDate = 'ActualStartDate' SELECT @filterByDate AS Date FROM TableName 谢谢。SQL标准,适用于大多数RDBMS DE
DECLARE @filterByDate VARCHAR(20)
IF(@filterByDate = 'expectedDate')
SET @filterByDate = 'ExpectedStartDate'
ELSE
SET @filterByDate = 'ActualStartDate'
SELECT @filterByDate AS Date
FROM TableName
谢谢。SQL标准,适用于大多数RDBMS
DECLARE @filterByDate VARCHAR(20)
IF(@filterByDate = 'expectedDate')
SET @filterByDate = 'ExpectedStartDate'
ELSE
SET @filterByDate = 'ActualStartDate'
Declare @Sql varchar(max)
SET @SQL = 'SELECT @Filter AS DATE FROM TableName'
DECLARE @ParmDefinition nVARCHAR(20)
SET @ParmDefinition = N'@filter nvarchar(20)'
exec sp_executesql @SQL, @ParmDefinition, @Filter = @filterByDate
SELECT CASE @filterByDate
WHEN 'ExpectedStartDate' THEN ExpectedStartDate
WHEN 'ActualStartDate' THEN ActualStartDate
ELSE NULL
END as mydate
--optional , @filterByDate AS ColumnName
FROM
MyTable
感谢这是非常有用的声明@filterByDate VARCHAR(20)SET@filterByDate='ExpectedStartDate'声明@Sql VARCHAR(max)SET@Sql='选择'+@filterByDate+'作为日期,insertDate FROM sheet'EXEC(@Sql),如果@filterByDate未清理,您有一个SQL注入风险此处没有注入-只有传递到sp_executesql的参数在usp中声明和设置。作为参数传入也没有好处。但是是的-如果这不在usp内,那么我同意我必须在存储过程中将@filterByDate作为参数传入。我认为对于存储过程来说,不存在sql注入的风险。我说得对吗?