当前位置: 首页 > 面试题库 >

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

井洲
2023-03-14
问题内容

我有一个由三个变量@ 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;

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


问题答案:

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。有关详细信息,请参见为什么从int进行转换/转换返回星号。
  2. 您无需强制转换为int内部动态查询。


 类似资料:
  • 问题内容: 每当我尝试将列表设置为IN表达式中使用的参数时,都会收到非法参数异常。互联网上的各种帖子似乎都表明这是可能的,但对我来说肯定不起作用。我正在使用带有Toplink的Glassfish V2.1。 有没有其他人能够使它正常工作,如果可以的话? 这是一些示例代码: 以及堆栈跟踪的相关部分: 问题答案: 您的JPQL无效,请删除括号

  • 问题内容: 我想从表中选择一些行,这些行具有某些在编写存储过程时尚不知道的值。例如,在图书馆数据库中搜索特定类型的书籍: 凡我想成为一个运行,也许下一个,这取决于用户的选择。如何在运行时更改表达式? 不幸的是,我仍然有很多关于SQL的知识,并且不确定我是否在问一个有意义的问题。我将不胜感激! 问题答案: 这比您在SQL Server 2005中可能想像的要棘手(2008具有表值参数,这使其更容易)

  • 问题内容: 最近我遇到了一个问题:赋值运算符链理解。 在回答这个问题,我开始怀疑我自己的加法赋值运算符的行为的理解或任何其他(,,等)。 我的问题是,下面的表达式中的变量何时更新到位,以便其更改的值在求值过程中反映在表达式的其他位置,其背后的逻辑是什么?请看以下两个表达式: 表达式1 表达式2 在第一个表达式中,当计算最里面的表达式时,似乎不更新的值,因此结果是而不是。 但是,在第二个表达式中,的

  • 最近我遇到了这样一个问题:作业操作员链理解。 在回答这个问题时,我开始怀疑自己对加法赋值运算符或任何其他(

  • Matplotlib 中的文本字符串都可以使用 Text Markup(一种文本标记语言)显现出来,具体的使用方法是将文本标记符放在一对美元符号 内,语法格式如下: 如果要绘制下标和上标,您需要使用 和 符号,下面是一个简单的示例: 上面代码的输出结果: Matplotlib数学表达式绘制 从上述示例可以看出,虽然数学表达式种类繁多,但是 Matplotlib 对各种数学符号都做了良好的支持。