Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Thực thi biểu thức toán học và đặt giá trị thành biến trong SQL

Sử dụng truy vấn được tham số hóa với sp_executesql thủ tục:

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;

Đồng thời sửa một số lỗi:

  1. declare @val1 varchar=100; Kích thước mặc định sẽ là 1@val1 được khởi tạo bằng * không phải 100 . Xem Tại sao ép / chuyển đổi từ int trả về một dấu hoa thị để biết chi tiết.
  2. Bạn không cần truyền tới int bên trong truy vấn động.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Giống như Operator trong Entity Framework?

  2. Bạn sử dụng kích thước nào cho varchar (MAX) trong khai báo tham số của mình?

  3. CURRENT_TIMESTAMP Ví dụ trong SQL Server (T-SQL)

  4. SQL Server Express so với express localdb

  5. Cách tạo Ràng buộc Duy nhất trên Nhiều Cột trong SQL Server - Hướng dẫn SQL Server / TSQL Phần 96