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

Instrukcja warunkowa w zapytaniu sql na klasycznej stronie ASP

W VBScript możesz użyć symbolu ampersand (&) do łączenia ciągów. Spróbuj tego:

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  

Masz trzy oddzielne klauzule „i”, które należy dołączyć do zapytania sql. Instrukcje warunkowe są od siebie niezależne, więc nie powinieneś używać elseif czyli dla różnych opcji w ramach jednej instrukcji warunkowej. Łatwiej jest sprawdzić, czy ciąg nie jest pusty if stringname <> "" niż używanie len , (i wątpię, aby twoje instrukcje warunkowe działały, ponieważ wydaje się, że używasz małej litery „o”, gdzie powinieneś używać zera)

Bardzo łatwo jest popełnić błędy podczas składania takich zapytań sql. W testach często warto dodać linię typu Response.Write strSqlData zanim spróbujesz go wykonać, aby sprawdzić, czy zapytanie jest tym, czego zamierzałeś

Jak sugerują inne komentarze, Twój kod jest podatny na atak typu SQL injection. Adresy URL zawierające „.asp?” prędzej czy później można prawie zagwarantować, że zostanie trafiony przez atak typu ASPROX. Zapytania parametryczne są najlepszym sposobem zabezpieczenia się przed tym, ale jednym szybkim podejściem, jeśli wszystkie wartości ciągu zapytania są numeryczne, jest użycie cint() - np.

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

Spowoduje to zgłoszenie błędu niezgodności typu, jeśli ciąg zapytania zawiera cokolwiek innego niż liczby, a skrypt przewróci się, zanim spróbuje wykonać zapytanie 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. Nie używaj sys.sql_dependencies w SQL Server (jest przestarzały)

  2. Rozwiązywanie problemów z replikacją serwera SQL

  3. Kiedy używać EXCEPT w przeciwieństwie do NOT EXISTS w Transact SQL?

  4. Ciąg oddzielony przecinkami w kolumnie tabeli w SQL Server

  5. Jak ROW_NUMBER() działa w SQL Server