Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Wykonaj wyrażenie matematyczne i ustaw wartość na zmienną w SQL

Użyj sparametryzowanego zapytania z sp_executesql procedura:

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;

Poprawiono również niektóre błędy:

  1. declare @val1 varchar=100; Domyślny rozmiar to 1 i @val1 jest inicjowany za pomocą * nie 100 . Zobacz Dlaczego przesyłanie/konwersja z int zwraca gwiazdka po szczegóły.
  2. Nie musisz przesyłać do int wewnątrz dynamicznego zapytania.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak przywrócić kopię zapasową SQL Server 2014 w SQL Server 2008

  2. Zrozumienie rekurencyjnego sprawdzania zakończenia CTE

  3. Użyj certyfikatu SQL z innej bazy danych

  4. Zmienić Sql-Server (express) z nazwanego wystąpienia na localhost?

  5. Wyodrębnij pierwszą wartość liczbową z ciągu sql