【发布时间】:2020-05-10 15:59:38
【问题描述】:
我想在我的SQL Server 查询中添加我的动态条件,但发现我应该使用串联查询。
我是串联查询的新手。这是我尝试过的以下查询,但系统税不正确。
DECLARE @value VARCHAR(500) = ' and ID IN (1,2)';
DECLARE @sql VARCHAR(MAX);
SET @sql = '
DECLARE @table TABLE
(
ID INT,
Amount INT,
Name VARCHAR(500)
);
DELETE FROM @table
INSERT INTO @table
(
ID,
Amount,
Name
)
VALUES
(1, 200, ''ab''),
(2, 300, ''ab''),
(3, -150, ''ac''),
(4, 200, ''ab'');
select SUM(Amount)
from @table
where name = ''ab'' ''' + @value + ''';';
EXEC (@sql);
在我的串联查询中添加条件查询变量的正确方法是什么。
【问题讨论】:
-
您遇到的错误是什么?
-
这看起来像是注射问题,如果我见过的话。
-
'和 ID IN (1,2)' 附近的语法不正确。
-
停止盲目应用模式。如果您声明一个表变量,则绝对不需要在声明后立即从该表变量中删除行。那时它不可能有任何行。事实上,你为什么需要一个表变量呢?只需使用table value constructor
标签: sql sql-server tsql concatenation dynamic-sql