- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章ASP多条件查询功能实现代码(多关键词查询)由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
经过多次研究写出了如下代码,有需要的可以参考下 。
。
ASP 多条件符合查询代码实例2 。
asp的多条件符合查询语句,自己写的,拿出来分享一下,绝对原创。请多指教.
。
。
本文面对的是“多条件模糊匹配搜索”,理解了多条件的,单一条件搜索也不过小菜一碟了。一般来讲,有两种方法进行多条件搜索:枚举法和递进法。搜索条件不太多时(n<=3),可使用枚举法,其语句频度为2的n次方,成指数增长,n为条件数。很明显,当条件增多以后,无论从程序的效率还是可实现性考虑都应采用递进法,其语句频度为n,成线性增长。需要指出的是,枚举法思路非常简单,一一判断条件是否为空,再按非空条件搜索,同时可以利用真值表技术来对付条件极多的情况(相信没人去干这种事,4条件时就已经要写16组语句了);递进法的思想方法较为巧妙,重在理解,其巧就巧在一是使用了标志位(flag),二是妙用SQL中字符串连接符&。下面以实例来讲解引擎的建立.
2.实例: 我们建立一通讯录查询引擎,数据库名为addressbook.mdb,表名为address,字段如下:
ID Name Tel School 1 张 三 33333333 电子科技大学计算机系 2 李 四 44444444 四川大学生物系 3 王 二 22222222 西南交通大学建筑系 … … … … 。
Web搜索界面如下:
姓名: 电话: 学校: 搜索按钮 。
采用枚举法的源程序如下:
。
。
理解上述程序时,着重琢磨核心部分,8组语句一一对应了3个搜索框中的8种状态 。
Name Tel School 空 空 空 空 空 非空 空 非空 空 空 非空 非空 非空 空 空 非空 空 非空 非空 非空 空 非空 非空 非空 。
另外trim()是VB的函数,将输入的字符串前后的空格去掉;%是SQL语言中的多字符通配符(_是单字符通配符),由此可见%"&trim()&"%对搜索框中输入的关键字是分别向左向右匹配的;SQL语言中用and连接说明非空条件之间是“与”关系.
再来看看递进法,与枚举法相比它们只有核心部分不同: '递进法的搜索核心,依次判断条件为空否,非空则将其加入搜索条件 。
。
。
递进法是一个明智的算法,单从语句的长短就可以看出来了。这个算法的难点和精髓就在flag和&上。首先你应该清楚&在SQL中就是一个字符串连接符,把该符号左右的字符拼接在一起。再回到程序,当Name不为空时sql="select * from address where Name like '%"&Name&"%' "同时flag=1;接下来当Name不为空时且Tel不为空时,即Tel<>"" and flag=1时,sql="select * from address where Name like '%"&Name&"%' and Tel like '%"&Tel&"%' "同时flag=1,否则当Name为空Tel不为空,sql="select * from address where Tel like '%"&Tel&"%' "同时flag=1;以此类推就可以推广到n个条件的搜索。当然条件皆为空时,即flag=0将选择所有表中所有项.
3.验证:
至此,一个搜索引擎就建立起来了。以下是一些使用示例:
姓名:张 电话: 学校: 搜索按钮 。
搜索结果为: 姓名: 张三 电话:33333333 单位:电子科技大学计算机系 。
姓名: 电话: 学校:大学 搜索按钮 。
搜索结果为: 姓名:张三 电话:33333333 单位:电子科技大学计算机系 姓名 李 四 电话:44444444 单位:四川大学生物系 姓名:王二 电话:22222222 单位:西南交通大学建筑系 。
姓名: 电话:4444 学校:四川 搜索按钮 。
搜索结果为: 姓名 李 四 电话:44444444 单位:四川大学生物系 。
姓名: 电话: 学校:交%大 搜索按钮 。
搜索结果为:
姓名:王二 电话:22222222 单位:西南交通大学建筑系 。
4.改进: 其实这个引擎还有些缺陷,问题主要在于通配符%。一方面是因为人们平时习惯把*作为通配符,另一方面%若出现在超链接中,通过request获取时%将被“吃”掉,如下:
。
。
--test.asp-- <% content=request(“content”) response.write content %> 。
在IE中浏览test.htm时点击超链接,显示为: testthesign 可见%直接被超链接忽略掉了。怎么才能解决这个问题呢?很简单,我们做点小小的手脚--偷梁换柱。 将以下代码加在搜索核心之前: Name=replace(Name,"*","%") Tel=replace(Tel,"*","%") Company=replace(Company,"*","%") 将以下代码加在搜索核心之后: Name=replace(Name,"%","*") Tel=replace(Tel,"%","*") Company=replace(Company,"%","*") 。
。
在我们来分析一下这些语句。replace()是VB中字符串替换函数,replace(Name,"*","%") 就是将Name中所有的*换成%。也就是说,我们把3个条件中凡是出现的*都替换为%,这样一来前3句就将通配符改成*了。而后3句就可以防止%被“吃”掉。所有问题就迎刃而解了吧.
姓名: 电话: 学校:交%大 搜索按钮 。
搜索结果为: 姓名:王 二 电话:22222222 单位:西南交通大学建筑系 。
将上面的语句再改一改,把*用空格代替,不就成了我们在Google、BaiDu中常用的用空格来分开搜索条件的搜索引擎了吗?
补充功能:如果我们要实现查询同一个表中的标题和内容 但想按这二个的顺序来排列 比如 查到与标题符合的先显示出来 而与内容符合的则显示在标题的后面 如何实现呢? 。
sql="select * from product where title like '%"&keyword&"%' " sql=sql + " union select * from product where content like '%"&keyword&"%' order by id desc" 。
两条SQL语句中间加一个,union 就可以联合查询,但列必须一样,还有排序条件也同样是一个. 。
我们将用到UNION的联合查询,这将能实现以上的功能.
分析:数据库查询 将先按与title的数据实现查询 然后再将实现与content的数据查询 故则有先后之分.
最后此篇关于ASP多条件查询功能实现代码(多关键词查询)的文章就讲到这里了,如果你想了解更多关于ASP多条件查询功能实现代码(多关键词查询)的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
背景: 我最近一直在使用 JPA,我为相当大的关系数据库项目生成持久层的轻松程度给我留下了深刻的印象。 我们公司使用大量非 SQL 数据库,特别是面向列的数据库。我对可能对这些数据库使用 JPA 有一
我已经在我的 maven pom 中添加了这些构建配置,因为我希望将 Apache Solr 依赖项与 Jar 捆绑在一起。否则我得到了 SolarServerException: ClassNotF
interface ITurtle { void Fight(); void EatPizza(); } interface ILeonardo : ITurtle {
我希望可用于 Java 的对象/关系映射 (ORM) 工具之一能够满足这些要求: 使用 JPA 或 native SQL 查询获取大量行并将其作为实体对象返回。 允许在行(实体)中进行迭代,并在对当前
好像没有,因为我有实现From for 的代码, 我可以转换 A到 B与 .into() , 但同样的事情不适用于 Vec .into()一个Vec . 要么我搞砸了阻止实现派生的事情,要么这不应该发
在 C# 中,如果 A 实现 IX 并且 B 继承自 A ,是否必然遵循 B 实现 IX?如果是,是因为 LSP 吗?之间有什么区别吗: 1. Interface IX; Class A : IX;
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我正在阅读标准haskell库的(^)的实现代码: (^) :: (Num a, Integral b) => a -> b -> a x0 ^ y0 | y0 a -> b ->a expo x0
我将把国际象棋游戏表示为 C++ 结构。我认为,最好的选择是树结构(因为在每个深度我们都有几个可能的移动)。 这是一个好的方法吗? struct TreeElement{ SomeMoveType
我正在为用户名数据库实现字符串匹配算法。我的方法采用现有的用户名数据库和用户想要的新用户名,然后检查用户名是否已被占用。如果采用该方法,则该方法应该返回带有数据库中未采用的数字的用户名。 例子: “贾
我正在尝试实现 Breadth-first search algorithm , 为了找到两个顶点之间的最短距离。我开发了一个 Queue 对象来保存和检索对象,并且我有一个二维数组来保存两个给定顶点
我目前正在 ika 中开发我的 Python 游戏,它使用 python 2.5 我决定为 AI 使用 A* 寻路。然而,我发现它对我的需要来说太慢了(3-4 个敌人可能会落后于游戏,但我想供应 4-
我正在寻找 Kademlia 的开源实现C/C++ 中的分布式哈希表。它必须是轻量级和跨平台的(win/linux/mac)。 它必须能够将信息发布到 DHT 并检索它。 最佳答案 OpenDHT是
我在一本书中读到这一行:-“当我们要求 C++ 实现运行程序时,它会通过调用此函数来实现。” 而且我想知道“C++ 实现”是什么意思或具体是什么。帮忙!? 最佳答案 “C++ 实现”是指编译器加上链接
我正在尝试使用分支定界的 C++ 实现这个背包问题。此网站上有一个 Java 版本:Implementing branch and bound for knapsack 我试图让我的 C++ 版本打印
在很多情况下,我需要在 C# 中访问合适的哈希算法,从重写 GetHashCode 到对数据执行快速比较/查找。 我发现 FNV 哈希是一种非常简单/好/快速的哈希算法。但是,我从未见过 C# 实现的
目录 LRU缓存替换策略 核心思想 不适用场景 算法基本实现 算法优化
1. 绪论 在前面文章中提到 空间直角坐标系相互转换 ,测绘坐标转换时,一般涉及到的情况是:两个直角坐标系的小角度转换。这个就是我们经常在测绘数据处理中,WGS-84坐标系、54北京坐标系
在软件开发过程中,有时候我们需要定时地检查数据库中的数据,并在发现新增数据时触发一个动作。为了实现这个需求,我们在 .Net 7 下进行一次简单的演示. PeriodicTimer .
二分查找 二分查找算法,说白了就是在有序的数组里面给予一个存在数组里面的值key,然后将其先和数组中间的比较,如果key大于中间值,进行下一次mid后面的比较,直到找到相等的,就可以得到它的位置。
我是一名优秀的程序员,十分优秀!