2011-06-10 86 views
0

我开发一个搜索系统中的SQL Server表的“标签”的短语......检查字符串使用经典ASP

用户输入以下搜索:“项目经理财政”

我们有一个表与标签...

tbl_tags以下物品(短语)在表:

ID Tag 
1 Project Managers 
2 Programme Managers 
3 Finance 
4 Finance Managers 

我要拆分的搜索短语和拉那只有一个结果在数据库中完全匹配。例如。 ID的1和3(不是2和4)

什么是最好的方式去做这个SQL查询?

我目前的方法非常冗长,涉及在查询中为每个单词生成所有结果,例如,产生所有结果,然后使用instr(query,oRS("Tag"))比较每个产生的tag

我已启用全文,所以如有必要可以使用contains

+0

你正在使用哪些DBMS? – 2011-06-10 08:43:21

+0

SQL企业管理器(DB是SQL Server 2008 R2) – 2011-06-10 08:46:28

回答

0

的副的书执行:

Option Explicit 

Const adVarChar = 200 ' remove if that constant is already defined 

Dim tags, term 
Dim placeholders, sql, cmd, result 

tags = Split(Request("searchterms"), " ") 

Set cmd = CreateObject("ADODB.Command") 
Set cmd.ActiveConnection = dbConnection ' I assume the connection object exists 

For Each term In tags  
    term = Trim(term) 
    If term <> "" Then 
    placeholders = placeholders & ",?"  
    cmd.Parameters.Append cmd.CreateParameter(, adVarChar, , 100, term) 
    End If 
Next 

If cmd.Parameters.Count > 0 Then 
    sql = "SELECT id FROM tbl_tags WHERE tag IN (" & Mid(placeholders, 2) & ")" 
    cmd.CommandText = sql 

    Set result = cmd.execute 

    While Not result.EOF 
    Response.Write result.Fields("id") ' whatever 
    result.MoveNext 
    Wend 
End If 

也可以看看到documentation of CreateParameter