变量声明(SQL Server)

时间:2018-12-04 17:03:10

标签: sql sql-server variables

我想知道是否可以在变量的内容为列名的地方声明一个变量,我尝试了下面的示例,但它不起作用。

DECLARE @P1 VARCHAR(3) 
SET @P1 = 'CPF'

SELECT * 
FROM dbo..table A 
WHERE @P1 = '123456789'

以下是示例表:

CPF            NAME
-----------------------
123456789      Luis
987654321      Rafael

2 个答案:

答案 0 :(得分:0)

您需要为此创建动态选择语句。 [但是,使用动态SQL有其自身的挑战,例如可能的SQL注入攻击]。

请参见下文-

DECLARE @P1 VARCHAR (10) = 'Column4' --This is Table column name , so you can give as per your table 
DECLARE @sqlQuery NVARCHAR(MAX) = N'SELECT * FROM  [Table 1]  WHERE ' + @P1 + ' =11' 
--above statement you will modify as per your code.
EXECUTE sp_executesql @sqlQuery

答案 1 :(得分:0)

您可以使用动态sql并将变量连接到语句中。然后,您执行所生成的语句。您还必须对查询变量中的单引号进行转义。

DECLARE @P1 VARCHAR (3) = 'CPF'

DECLARE @sqlQuery  NVARCHAR(MAX) = N'
SELECT * 
FROM dbo.table A 
WHERE ' + @P1 + ' = ''123456789''
'
EXEC(@sqlQuery)