我想知道是否可以在变量的内容为列名的地方声明一个变量,我尝试了下面的示例,但它不起作用。
DECLARE @P1 VARCHAR(3)
SET @P1 = 'CPF'
SELECT *
FROM dbo..table A
WHERE @P1 = '123456789'
以下是示例表:
CPF NAME
-----------------------
123456789 Luis
987654321 Rafael
答案 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)