2015-10-23 3 views
0

Как конвертировать, в классический ASP, это (пример) разделенных запятыми QueryStringв классический ASP: Преобразовать разделенные запятой строка

Illinois, Iowa, Wisconsin, Indiana, Kentucky,Missouri to 

'Illinois', 'Iowa', 'Wisconsin', 'Indiana', 'Kentuck','Missouri' 

Я использую Dreamweaver и нужен этот формат для выбора записей из таблицы, которые содержат одно из состояний в строке с использованием предложения IN.

+0

Не делайте этого! ** НИКОГДА ** не использовать неутвержденные параметры получения непосредственно в sql-запросе. Используйте параметризованные запросы. – Alejandro

ответ

1

Если вам нужно только преобразование здесь:

origstring = "Illinois, Iowa, Wisconsin, Indiana, Kentucky, Missouri" 
convertedstring = "'" &replace(origstring, ", ","', '") &"'" 

Но предположим, что вы (или кто-либо другой) есть строки запроса с состояниями:

strinclause = "" 
arrstates = Split(Request.QueryString("states"), ",") 
if(Ubound(arrstates) > 0) Then 
    for i=0 to Ubound(arrstates) 
     'VALIDATE/CLEAN YOUR ARRAY ITEMS AND BUILD YOUR STRING IN THIS WAY: 
     strinclause = strinclause & "'" &arrstates(i)& "'," 
    next 
    'NOW REMOVE LAST COMA 
    strinclause = Left(strinclause,Len(strinclause)-1) 
end if 
'HERE YOU CAN USE YOUR STRING THAT WILL BE IN THE FORMAT YOU ASKED 
0

торчат spitballing, но вы могли бы сделать что-то вроде этого:

<% 
    Dim qs : qs = Trim("" & Request.QueryString("states") ' e.g. "Illinois, Iowa, Wisconsin, Indiana, Kentucky, Missouri" 

    Dim cmd : Set cmd = Server.CreateObject("ADODB.Command") 
    cmd.ActiveConnection = db.connection ' defined elsewhere 
    cmd.ActiveConnection.CursorLocation = adUseClient ' 3 
    cmd.CommandType = adCmdText ' 1 
    cmd.CommandTimeout = 90 

    dim inp : inp = Split(qs, ",") ' states 
    dim sql, i : ReDim sql (ubound(inp)) ' for sql 

    for i = 0 to ubound(inp) 
      sql(i) = "select ?" ' parameter in string 
      cmd.Parameters.Append cmd.CreateParameter("@p" & i, adVarChar, adParamInput, 100, inp(i)) ' actual typed parameter object 
    next 
    cmd.CommandText = "select id, stock from warehouse where state in (" & Join(sql, " union ") & ")" 

    Set rs = cmd.Execute 
    Do While Not rs.eof 
      response.write "<p>" & rs("id") & ": " & rs("stock") & "</p>" 
      rs.MoveNext 
    Loop 
    Set rs = Nothing 
    Set cmd = Nothing 
%> 
Смежные вопросы