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

Câu lệnh điều kiện trong truy vấn sql trên Trang ASP cổ điển

Trong VBScript, bạn có thể sử dụng ký hiệu và (&) để nối các chuỗi. Hãy thử điều này:

strSqlData="select * from MyTable where gender='male'" 

if AcademicYear <> "" then 
strSqlData= strSqlData & " and AcademicYear=" & AcademicYear
end if

if Batch <> "" then
strSqlData= strSqlData & " and Batch=" & Batch    
end if  

if School <> "" then 
strSqlData= strSqlData & " and School=" & School
end if  

Bạn có ba mệnh đề "và" riêng biệt để thêm vào truy vấn sql của mình. Các câu lệnh điều kiện độc lập với nhau, vì vậy bạn không nên sử dụng elseif dành cho các tùy chọn khác nhau trong một câu lệnh điều kiện duy nhất. Đơn giản hơn để kiểm tra xem một chuỗi có trống hay không if stringname <> "" so với việc sử dụng len , (và tôi nghi ngờ các câu lệnh điều kiện của bạn sẽ hoạt động vì bạn có vẻ đang sử dụng chữ cái viết thường "o", nơi bạn nên sử dụng số 0)

Rất dễ mắc lỗi khi bạn đang tập hợp các truy vấn sql như thế này. Trong quá trình thử nghiệm, bạn nên thêm một dòng như Response.Write strSqlData trước khi bạn cố gắng thực thi nó để kiểm tra xem truy vấn có phải là những gì bạn đang có ý định không

Như các nhận xét khác đã đề xuất, mã của bạn dễ bị tấn công SQL injection. Các url chứa ".asp?" hầu như có thể được đảm bảo sẽ bị tấn công kiểu ASPROX sớm hay muộn. Các truy vấn được tham số là phương tiện tốt nhất để bảo vệ chống lại điều này, nhưng một cách tiếp cận nhanh nếu các giá trị chuỗi truy vấn của bạn đều là số là sử dụng cint() - ví dụ:

strSqlData= strSqlData & " and AcademicYear=" & cint(AcademicYear)

Điều này sẽ tạo ra lỗi không khớp về kiểu nếu chuỗi truy vấn chứa bất kỳ thứ gì khác ngoài số và tập lệnh sẽ bị đổ trước khi nó cố gắng thực thi truy vấn sql của bạn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chọn ký tự cyrillic trong SQL

  2. Không thể lưu nhiều hơn 43679 ký tự trong cột kiểu dữ liệu văn bản trong SQL Server

  3. SQL Server 2012 gói dịch vụ 1 và bản cập nhật tích lũy 1

  4. Không thể tạo hàng có kích thước 8064 lớn hơn kích thước hàng cho phép là 8060

  5. Tạo một bảng được phân vùng trong SQL Server (T-SQL)