使用经典 ASP 检查 SQL Server 表中“标记”短语的字符串

Posted

技术标签:

【中文标题】使用经典 ASP 检查 SQL Server 表中“标记”短语的字符串【英文标题】:Check string for "tag" phrases in SQL Server table using Classic ASP 【发布时间】:2011-06-10 08:38:54 【问题描述】:

我正在开发一个搜索系统...

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

我们有一个带有标签的表格...

tbl_tags在表格中包含以下项目(短语):

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

我想拆分搜索短语并提取仅在数据库中完全匹配的结果。例如。 ID 的 1 和 3(不是 2 和 4)

作为 SQL 查询处理此问题的最佳方法是什么?

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

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

【问题讨论】:

您使用的是什么 DBMS? SQL 企业管理器(数据库是 SQL Server 2008 R2) 【参考方案1】:

我刚刚找到了解决这个问题的方法,使用CHARINDEXCONTAINS 结果与字符串进行比较。

http://msdn.microsoft.com/en-us/library/ms186323.aspx

【讨论】:

【参考方案2】:

按部就班的实现:

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

【讨论】:

以上是关于使用经典 ASP 检查 SQL Server 表中“标记”短语的字符串的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 文本列影响返回到经典 ASP 的结果

经典 ASP - 使用 Windows 身份验证的 SQL Server 2008 连接字符串

经典的 ASP 奇怪的 SQL 错误

ASP.NET + SQL SERVER + JSON = 如何在 SQL Server 的两个连接表中获取数据并加载为 JSON?

经典 ASP 跨站脚本

Sql Server 2008如何检查表中是不是存在列? [复制]