- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章结合asp和存储过程做的搜索程序由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
比较复杂,可以支持多种逻辑符,包括 + - and or 空格等,并且根据需要随便增加。可以根据条件选择在那个表中搜索,对速度也做了优化,可以说是很快的。当然因为是以前写的,存在不少毛病。存储过程中用到几乎所有sql server的特性,如光标(记录集分页)等。好了,不吹了,自己看程序吧。 asp 函数 。
复制代码代码如下
function AnalyseKeyword(a_strSource) dim m_strDest , m_intLoop dim m_intBeginPos , m_intEndPos dim m_strHead , m_strMiddle , m_strTail m_strDest = a_strSource '------------------------------处理空格------------------------------------------------------ '首先去掉头尾空格 m_strDest = ltrim(rtrim(m_strDest)) '将& , " and " 等替换成 +、 -、空格 m_strDest = replace(m_strDest , "&" , "+") m_strDest = replace(m_strDest , " AND " , "+") m_strDest = replace(m_strDest , " OR " , chr(32)) m_strDest = replace(m_strDest , " NOT " , "-") '初始化变量,以使下面的循环进行 m_intBeginPos = 1 do while m_intBeginPos <> 0 m_intBeginPos = instr(m_strDest ,chr(32)) if m_intBeginPos <> 0 then '如果找到空格 m_strHead = rtrim(ltrim(left ( m_strDest , m_intBeginPos ))) call print("[AnalyseKeyword()]:处理空格m_strHead = " + m_strHead) m_strTail = rtrim(ltrim(right (m_strDest , len(m_strDest) - m_intBeginPos))) call print("[AnalyseKeyword()]:处理空格m_strTail = " + m_strTail) m_strDest = m_strHead + "*" + m_strTail else exit do end if loop m_strDest = replace (m_strDest , "*" , chr(32)) call print("[AnalyseKeyword()]:处理空格完毕后m_strDest = " + m_strDest) '-------------------------------空格处理完毕------------------------------------------------- '-------------------处理单双引号----------------------------------------------------- '首先将单引号替换为双引号 m_strDest = replace ( m_strDest , chr(39) , chr(34)) '置一个初值以使循环进行 m_intBeginPos = 1 m_intEndPos =1 m_strHead = "" m_strTail = "" do while m_intBeginPos <> 0 and m_intEndPos <> 0 '如果发现双引号,则记下开始位置,查找下一个双引号 m_intBeginPos = instr(m_strDest , chr(34)) if m_intBeginPos <> 0 then '如果找到第一个引号 call print("[AnalyseKeyword()]:第一个引号出现的位置:" + cstr(m_intBeginPos)) m_intEndPos = instr(m_intBeginPos + 1 , m_strDest ,chr(34)) if m_intEndPos <> 0 then '如果找到第二个引号 call print("[AnalyseKeyword()]:第二个引号出现的位置:" + cstr(m_intEndPos)) '将整个字符串按引号分隔成三段 call print ("[AnalyseKeyword()]:处理引号m_strDest = " + m_strDest) m_strHead = left(m_strDest , m_intBeginPos - 1) call print ("[AnalyseKeyword()]:处理引号m_strHead = " + m_strHead) m_strMiddle = mid(m_strDest , m_intBeginPos + 1 , m_intEndPos - m_intBeginPos - 1) call print ("[AnalyseKeyword()]:处理引号m_strMiddle = " + m_strMiddle) m_strTail = right(m_strDest , len(m_strDest) - m_intEndPos) call print ("[AnalyseKeyword()]:m_strTail = " + m_strTail) '如果在引号中有+号则作为字符处理,暂时替换成其他字符 m_strMiddle = replace(m_strMiddle , "+" , "|") m_strDest = m_strHead + replace(rtrim(ltrim(m_strMiddle)) , chr(32) , "#") + m_strTail else exit do end if else exit do end if loop m_strDest = replace(m_strDest , chr(34) , "+") call print ("[AnalyseKeyword()]:处理引号完毕后m_strDest = " + m_strDest) '-------------------------------引号处理完毕------------------------------------------------- '-------------------------------处理多个加号及加号两边的空格问题----------------------------- '处理多个加号的问题,遇到多个加号则认为是字符串,而不是逻辑符 m_strDest = replace (m_strDest , "+++" ,"|||") m_strDest = replace (m_strDest , "++" , "||") call print ("[AnalyseKeyword()]:处理多个减号完毕后m_strDest = '" + m_strDest + "'") '处理加号两边的空格 m_strDest = replace(m_strDest , " +" , "+") m_strDest = replace(m_strDest , "+ " , "+") m_strDest = replace(m_strDest , " + " , "+") call print ("[AnalyseKeyword()]:处理减号两边的空格完毕后m_strDest = '" + m_strDest + "'") '-------------------------------处理加号完毕----------------------------- '-------------------------------处理多个减号及减号两边的空格问题----------------------------- '处理多个减号的问题,遇到多个减号则认为是字符串,而不是逻辑符 m_strDest = replace (m_strDest , "---" ,"~~~") m_strDest = replace (m_strDest , "--" , "~~") call print ("[AnalyseKeyword()]:处理多个减号完毕后m_strDest = '" + m_strDest + "'") '处理减号两边的空格 m_strDest = replace(m_strDest , " -" , "-") m_strDest = replace(m_strDest , "- " , "-") m_strDest = replace(m_strDest , " - " , "-") call print ("[AnalyseKeyword()]:处理加号两边的空格完毕后m_strDest = '" + m_strDest + "'") '-------------------------------处理减号完毕----------------------------- '------------------------------处理字符串两头的加减号问题----------------- if len(m_strDest) >= 3 then m_strHead = left(m_strDest , 1) m_strMiddle = mid(m_strDest , 2 , len(m_strDest) - 2) m_strTail = right(m_strDest , 1) if m_strHead = "+" or m_strHead = "-" then m_strHead = "" end if if m_strTail = "+" or m_strTail = "-" then m_strTail = "" end if m_strDest = m_strHead + m_strMiddle + m_strTail end if '----------------------------处理完毕------------------------------------- m_strDest = replace(m_strDest , "--" , "~~") m_strDest = replace(m_strDest , "++" , "||") m_strDest = replace(m_strDest , chr(32) , "@") AnalyseKeyword = m_strDest call print ("[AnalyseKeyword()]:全部处理完毕后m_strDest = '" + m_strDest + "'") end function %> 存储过程 /*********************************************************************/ /* proc name : Up_ParseWordSearch */ /* */ /* Description: 关键字搜索 */ /* */ /* parameters: @a_strCategoryID 分类id */ /* @a_intPosition 调用的位置 */ /* @a_strParseWord 搜索关键字 */ /* @a_intRowCount 限定最多取得记录数 */ /* */ /* date: 2000/6/28 */ /* */ /* author: Liuyunpeng */ /* */ /* history: */ /*********************************************************************/ if exists (select * from sysobjects where id = object_id("up_ParseWordSearch")) drop proc up_ParseWordSearch go create proc up_ParseWordSearch @a_strParseword varchar(255) , @a_strCategoryID varchar(255) , @a_intPosition tinyint , @a_intRowCount int as declare @m_strSqlCondition varchar(255) --Sql语句的条件部分 declare @m_strSqlSelect varchar(255) --Sql语句的选择部分 declare @m_strSqlCategory varchar(100) --sql语句的分类部分 /*根据调用位置决定sql的选择部分*/ select @m_strSqlSelect = case when @a_intPosition = 4 then --商品库 "select ProductID , 'Title' = ProductName , 'Description' = left(Description , 100) " + " from Product where " when @a_intPosition = 5 then --商业机会库 "select ID , Title ,'Description' = left(convert(varchar,content) , 100) " + " from BusinessChance where " when @a_intPosition = 6 then --公司库 "select CompanyID , 'Title' = CompanyName , 'Description' =left(Description , 100) " + " from Company where " end /*根据分类ID决定sql的分类部分*/ select @m_strSqlCategory = case when @a_strCategoryID <> "0" then " CategoryID like '" + @a_strCategoryID + "%' and " else "" end /*根据调用位置决定sql的条件部分*/ select @m_strSqlCondition = case when @a_intPosition = 4 --商品 then "(ProductName like '%" + @a_strParseWord + "%'" + " or Description like '%" + @a_strParseWord + "%'" + " or ProducerName like '%" + @a_strParseWord + "%') " when @a_intPosition = 5 --商业机会 then "(Title like '%" + @a_strParseWord + "%'" + " or Keyword like '%" + @a_strParseWord + "%') " when @a_intPosition = 6 then "(CompanyName like '%" + @a_strParseWord + "%'" + " or Description '%" + @a_strParseWord + "%') " end set rowcount @a_intRowCount exec (@m_strSqlSelect + @m_strSqlCategory + @m_strSqlCondition) set rowcount 0 go 。
最后此篇关于结合asp和存储过程做的搜索程序的文章就讲到这里了,如果你想了解更多关于结合asp和存储过程做的搜索程序的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我在我的应用程序中使用 Hibernate Search。其中一个子集合被映射为 IndexedEmbedded。子对象有两个字段,一个是 id,另一个是日期(使用日期分辨率到毫秒)。当我搜索 id=
The App Engine Search API有一个 GeoPoint 字段。可以用它来进行半径搜索吗?例如,给定一个 GeoPoint,查找位于特定半径内的所有文档。 截至目前,它看起来像 Ge
客户对我正在做的员工管理项目提出了这个新要求,以允许他们的用户进行自定义 bool 搜索。 基本上允许他们使用:AND、OR、NOT、括号和引号。 实现它的最佳方法是什么?我检查了 mysql,它们使
很想知道哪个更快 - 如果我有一个包含 25000 个键值对的数组和一个包含相同信息的 MySQL 数据库,搜索哪个会更快? 非常感谢大家! 最佳答案 回答这个问题的最好方法是执行基准测试。 关于ph
我喜欢 smartcase,也喜欢 * 和 # 搜索命令。但我更希望 * 和 # 搜索命令区分大小写,而/和 ?搜索命令遵循 smartcase 启发式。 是否有隐藏在某个地方我还没有找到的设置?我宁
我有以下 Marklogic 查询,当在查询控制台中运行时,它允许我检索具有管理员权限的系统用户: xquery version "1.0-ml"; import schema namespace b
我希望当您搜索例如“A”时,所有以“A”开头的全名都会出现。因此,如果名为“Andreas blabla”的用户将显示 我现在有这个: $query = "SELECT full_name, id,
我想在我的网站上添加对人名的搜索。好友列表已经显示在页面上。 我喜欢 Facebook 这样做的方式,您开始输入姓名,Facebook 只会显示与查询匹配的好友。 http://cl.ly/2t2V0
您好,我在我的网站上进行搜索时遇到此错误。 Fatal error: Uncaught Error: Call to undefined function mysql_connect() in /ho
声明( 叠甲 ):鄙人水平有限,本文为作者的学习总结,仅供参考。 1. 搜索介绍 搜索算法包括深度优先搜索(DFS)和广度优先搜索(BFS)这两种,从起点开始,逐渐扩大
我正在为用户列表使用 FuturBuilder。我通过 futur: fetchpost() 通过 API 获取用户。在专栏的开头,我实现了一个搜索栏。那么我该如何实现我的搜索栏正在搜索呢? Cont
我正在使用 MVC5,我想搜索结果并停留在同一页面,这是我在 Controller (LiaisonsProjetsPPController) 中执行搜索操作的方法: public ActionRes
Azure 搜索中的两种方法 Upload 与 MergeOrUpload 之间有什么区别。 他们都做完全相同的事情。即,如果文档不存在,它们都会上传文档;如果文档已经存在,则替换该文档。 由于这两种
实际上,声音匹配/搜索的当前状态是什么?我目前正在远程参与规划一个 Web 应用程序,该应用程序将包含和公开记录的短音频剪辑(最多 3-5 秒,人名)的数据库。已经提出了一个问题,是否可以实现基于用户
在商业应用程序中,具有数百个面并不罕见。当然,并非所有产品都带有所有这些标记。 但是在搜索时,我需要添加一个方面查询字符串参数,其中列出了我想要返回的所有方面。由于我事先不知道相关列表,因此我必须在查
当我使用nvcc 5.0编译.cu文件时,编译器会为我提供以下信息。 /usr/bin/ld: skipping incompatible /usr/local/cuda-5.0/lib/libcud
我正在使用基于丰富的 Lucene 查询解析器语法的 Azure 搜索。我将“~1”定义为距离符号的附加参数)。但我面临的问题是,即使存在完全匹配,实体也没有排序。 (例如,“blue~1”将返回“b
我目前有 3 个类,一个包含 GUI 的主类,我在其中调用此方法,一个包含数据的客户类,以及一个从客户类收集数据并将其放入数组列表的 customerList 类,以及还包含搜索数组列表方法。 我正在
假设我有多个 6 字符的字母数字字符串。 abc123、abc231、abc456、cba123、bac231 和 bac123 。 基本上我想要一个可以搜索和列出所有 abc 实例的选择语句。 我只
我有这个表 "Table"内容: +--------+ | Serial | +--------+ | d100m | <- expected result | D100M | <- expect
我是一名优秀的程序员,十分优秀!