在SQL Server存储过程中强制转换@param



我有一个接受@columnName参数的SQL Server存储过程,我正在使用它来构建查询:

AND @columnName LIKE '%' + @userInput + '%'

如果我用静态值替换@columnName,它就会起作用,比如:

AND userName LIKE '%' + @userInput + '%'

我相信这是因为@columnName被视为字符串,因为当运行存储过程时,它被传递为字符串,如下所示:

EXEC app.findUsers 'UserName', 'sa'

是否可以在不使用动态查询字符串的情况下执行此操作?

您需要使用SQL Dynamic来完成此操作。

DECLARE @SQL VARCHAR(8000)
SET @SQL = 'SELECT Column FROM Table WHERE [' + @columnName + '] LIKE ''%' + @userInput  + '%'''
PRINT @SQL
EXEC(@SQL)

最新更新