小编典典

执行数学表达式并将值设置为SQL中的变量

sql

我有一个由三个变量@ val1,@
val2和@Operator创建的数学表达式。因此,我是否需要按字符串执行查询,并且需要在查询字符串中设置变量的值,如何设置?

我在下面试过

declare @val1 varchar=100;
declare @val2 varchar=300;
declare @Oper varchar(20)='>';

declare @query varchar(max);

declare @Flag int=0;

set @query='if(convert(int,'+@val1+')'+@Oper+'convert(int,'+@val2+') set @Flag=1';


exec (@query);
print @Flag;

注意: 我正在函数内部使用它。


阅读 223

收藏
2021-04-14

共1个答案

小编典典

sp_executesql过程使用参数化查询:

DECLARE @val1 VARCHAR(20)= '500';
DECLARE @val2 VARCHAR(20)= '300';
DECLARE @Oper VARCHAR(20)= '>';

DECLARE @query NVARCHAR(MAX);

DECLARE @Flag INT= 0;

SET @query = 'if ' + @val1 + @Oper + @val2 + ' set @Flag=1';

DECLARE @ParamDefs NVARCHAR(MAX) = N'@Flag int output'

EXEC sp_executesql @query, @ParamDefs, @Flag OUTPUT

PRINT @Flag;

还纠正了一些错误:

  1. declare @val1 varchar=100;默认大小将为,1@val1使用*not初始化100
  2. 您无需强制转换为int内部动态查询。
2021-04-14