使用经典 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】:我刚刚找到了解决这个问题的方法,使用CHARINDEX
将CONTAINS
结果与字符串进行比较。
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 表中“标记”短语的字符串的主要内容,如果未能解决你的问题,请参考以下文章
经典 ASP - 使用 Windows 身份验证的 SQL Server 2008 连接字符串
ASP.NET + SQL SERVER + JSON = 如何在 SQL Server 的两个连接表中获取数据并加载为 JSON?