Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Изпълнете математически израз и задайте стойността на променлива в SQL

Използвайте параметризирана заявка с 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 се инициализира с * не 100 . Вижте Защо cast/convert от int връща звездичка за подробности.
  2. Не е необходимо да прехвърляте към int вътре в динамична заявка.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL RANK() над PARTITION на обединени таблици

  2. Не може да се зареди драйвер:com.microsoft.sqlserver.jdbc.SQLServerDriver weblogic 10g

  3. sql проблем със заявка при докладване

  4. Изпълнение на съхранена процедура с помощта на Windows Task Scheduler

  5. Как да сравните datetime само с дата в SQL Server