以下查询中缺少什么?
出现错误
数据类型varchar和varchar在模运算符中不兼容
我的代码:
DECLARE @SQLStatement AS VARCHAR(max)
DECLARE @GroupName VARCHAR(100) = 'abc xyz abc'
CREATE TABLE #a
(
col1 INT,
col2 VARCHAR(50),
col3 VARCHAR(100)
)
SET @SQLStatement = 'INSERT INTO #a
SELECT col1, col2, col3
FROM Group
WHERE GroupName like '+@GroupName+''%''' '
PRINT (@SQLStatement)
EXEC (@SQLStatement)
SELECT * FROM #a
答案 0 :(得分:2)
使用参数和sp_executesql
:
SET @SQLStatement = '
INSERT INTO #a
SELECT col1, col2, col3
FROM Group
WHERE GroupName like @GroupName + ''%''
';
exec sp_executesql @SQLStatement, N'@GroupName varchar(100)', @GroupName = @GroupName;
这似乎无济于事,想必您打算这样做:
WHERE ' ' + GroupName + ' ' LIKE '% ' + @GroupName + ' %'
答案 1 :(得分:1)
您的@SQLStatement应该如下所示。
SET @SQLStatement = 'INSERT INTO #a SELECT col1, col2, col3 FROM Group WHERE GroupName LIKE '''+@GroupName+'%''';
但是,您应该考虑不在整个语句中为此使用动态SQL。您只需构建@GroupName
参数就可以逃脱。
此外,请了解一下SQL Injection Attacks,您可能会完全重新考虑这种方法。