2015-10-23 25 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 
%>