2015-10-23 27 views
0

如何轉換,在傳統的ASP,這(例如)逗號分隔的查詢字符串在傳統的ASP:將逗號分隔字符串

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

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

我使用Dreamweaver和需要這種格式是由含有表中選擇記錄使用IN子句的字符串中的一個狀態。

+0

不要這樣做! **從不**將未驗證的get參數直接粘貼到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 
%>