Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Führen Sie einen mathematischen Ausdruck aus und setzen Sie den Wert auf eine Variable in SQL

Verwenden Sie eine parametrisierte Abfrage mit sp_executesql Verfahren:

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;

Auch einige Fehler korrigiert:

  1. declare @val1 varchar=100; Die Standardgröße ist 1 und @val1 wird mit * initialisiert nicht 100 . Siehe Why-cast/convert from int returns an Sternchen für Details.
  2. Sie müssen nicht nach int umwandeln innerhalb der dynamischen Abfrage.