使用列名称&创建存储过程。动态搜索的价值

时间:2013-09-07 06:37:35

标签: sql-server sql-server-2008

我想创建一个包含两个ColumnNameColumnValue参数的存储过程进行搜索

我的查询看起来像这样:

SELECT * FROM TableName WHERE @ColumnName Like  @ColumnValue  + '%'

但是返回0结果

1 个答案:

答案 0 :(得分:4)

您需要动态SQL。你写的是在@ColumnName值中搜索@columnValue值。因此,如果您的列为foo且值为bar,则会搜索'foo' LIKE 'bar%'

DECLARE @SQL AS NVARCHAR(MAX)

SET @SQL = 
N'SELECT * FROM TableName 
WHERE ' + QuoteName(@ColumnName) + ' LIKE @val+''%'''

EXECUTE sp_executesql 
@SQL,
N'@val varchar(100)',
@val = @ColumnValue;