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

Cần trợ giúp trong truy vấn động với Mệnh đề IN

Nếu tên verdor của bạn là

 declare @in varchar(100)
 select @in = 'HP,LENOVO'

Bạn có thể sử dụng SQL động

 declare @sql nvarchar(1000)
 select @sql = 'select * from yourtable where yourfield in ('[email protected] +')'
 exec sp_executesql @sql

hoặc bạn có thể đặt hàm phân tách của mình trả về một bảng

 select * 
 from yourtable
     inner join dbo.f_Split(@in) f 
     on yourtable.yourfield =f.entry

Loại thứ hai được ưa chuộng hơn nhiều do khả năng bảo vệ khỏi các cuộc tấn công kiểu chèn SQL



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MS SQL Server và JDBC:kết nối bị đóng

  2. Truy vấn phụ trong ràng buộc kiểm tra

  3. không phải là một tên chức năng tích hợp sẵn được công nhận

  4. Chỉ chèn một hàng nếu nó chưa có ở đó

  5. 3 lĩnh vực sẽ được hưởng lợi từ việc sử dụng công cụ giám sát hiệu suất máy chủ SQL