【发布时间】:2018-10-10 10:12:45
【问题描述】:
我试图让用户从表格中选择他们想要查看的列,并且即使他们没有填写某人的全名(如过滤器)也能够获得结果。当下面的代码不在 SET 字符串中时,它确实可以正常工作,但是当它是时,我确实有一个我看不到的错误。错误出现在“WHERE”行,这就是 SQL 服务器告诉我的。
DECLARE @SQL NVARCHAR(Max) = ''
SET @SQL =
'
SELECT ' + @TableList + ' FROM People
WHERE (IsNull(Input.Name, '''') LIKE ''%'' '+ @Name +' ''%'')
'
EXEC(@SQL)
下面是查询不在字符串中并且正常工作时的样子。
SELECT [Name], [Age], [City] FROM People
WHERE (IsNull(Input.Name, '') LIKE '%' + @Name + '%')
假设用户输入名称“Tom”,他们将得到以下结果...
Name Age City
Tom 28 NY
Tommy 35 LA
我收到的错误消息是...
The data types varchar and varchar are incompatible in the modulo operator.
这让我有点困惑,因为它不在字符串中时确实可以正常工作。
【问题讨论】:
标签: sql sql-server