sql >> Database teknologi >  >> RDS >> Sqlserver

Udfør matematisk udtryk og sæt værdien til variabel i SQL

Brug parametriseret forespørgsel med sp_executesql procedure:

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;

Har også rettet nogle fejl:

  1. declare @val1 varchar=100; Standardstørrelsen vil være 1 og @val1 initialiseres med * ikke 100 . Se Hvorfor cast/konverter fra int returnerer en stjerne for detaljer.
  2. Du behøver ikke at caste til int inde i dynamisk forespørgsel.


  1. SQL Server:Skift nuværende database via variabel

  2. Postgres:Mange-til-mange vs. flere kolonner vs. matrixkolonne

  3. Værdsat indsat i tabel i oracle ikke gemt?

  4. RuntimeError:OperationalError:(2003, Kan ikke oprette forbindelse til MySQL-serveren på 'IP-adressen på forekomsten'