sql >> Databasteknik >  >> RDS >> Sqlserver

Kör matematiska uttryck och ställ in värdet på variabel i SQL

Använd parametriserad fråga med sp_executesql procedur:

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;

Rättade även några misstag:

  1. declare @val1 varchar=100; Standardstorleken är 1 och @val1 initieras med * inte 100 . Se Varför cast/convert from int returnerar en asterisk för mer information.
  2. Du behöver inte casta till int inuti dynamisk fråga.


  1. MySQL installera och ladda databas på Inno Setup script

  2. Databas EAV-modell, postlista enligt sökning

  3. LISTAGG i ORACLE

  4. Hur jämför jag SQL-tidsstämpel i .NET?