Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Условно изявление в sql заявка на класическа ASP страница

Във VBScript можете да използвате символа амперсанд (&) за свързване на низове. Опитайте това:

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  

Имате три отделни клаузи "и", които да добавите към вашата sql заявка. Условните оператори са независими един от друг, така че не трябва да използвате elseif което е за различни опции в рамките на един условен оператор. По-лесно е да проверите дали даден низ не е празен if stringname <> "" отколкото да използвате len , (и се съмнявам, че вашите условни изрази ще работят, защото изглежда, че използвате малка буква "o", където трябва да използвате нула)

Много е лесно да правите грешки, когато сглобявате sql заявки като тази. При тестване често си струва да добавите ред като Response.Write strSqlData преди да се опитате да го изпълните, за да проверите дали заявката е това, което възнамерявате

Както предполагат други коментари обаче, вашият код е уязвим за атака чрез SQL инжектиране. URL адреси, които съдържат ".asp?" може почти гарантирано да бъде засегнат от атака тип ASPROX рано или късно. Параметризираните заявки са най-доброто средство за предпазване от това, но един бърз подход, ако стойностите на низа на заявката ви са изцяло числови, е да използвате cint() - например

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

Това ще изведе грешка при несъответствие на типа, ако низът на заявката съдържа нещо различно от числа, и скриптът ще падне, преди да се опита да изпълни вашата 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. Използвайте DATABASEPROPERTYEX(), за да върнете настройките на базата данни в SQL Server

  2. Извличане/избиране на стойности от множество редове в 1 единствен ред в sql сървър

  3. Как да получите данни за последните 7 дни от текущата дата и час до последните 7 дни в sql сървър

  4. Изразът GROUP-BY трябва да съдържа поне една колона, която не е външна препратка

  5. SQL:Реално транспониране