登陆注册
19122000000011

第11章 常规的数据库搜索(1)

本章要点

本章介绍常规的基于数据库的全文搜索技术。包括:精确搜索、范围搜索和模糊搜索。本章是继续学习基于数据库的全文搜索的基础,是常规知识的概要总结。

3.1常规的数据库搜索

常规的数据库搜索,就是基于标准SQL语句的句法进行的数据查询。通常要使用“=”进行精确搜索,使用“between”、“in”符号设定范围搜索,使用“like”实现模糊搜索。结合数据库的内置函数(如:instr等),还可以实现其他类型的搜索,因数据库而异。

使用ASP3.0,ASP.NET1.1,PHP5.1.4,JSP2.4等技术均可实现常规的数据库搜索,本章各举一例来说明这些情况。

关于SQL Server2000数据库的安装见附录A,其基本使用方法见附录B。

关于Oracle9i数据库的安装见附录C,其基本使用方法见附录D。

关于MySQL5.0.19数据库的安装见附录E,其基本使用方法见附录F。

3.2使用ASP实现常规的数据库搜索

这一节的案例演示了基于数据库的搜索,使用ASP3.0技术,以及SQL Server2000数据库中的pubs数据库和authors表格。

3.2.1使用ASP实现精确搜索

精确搜索,使用“=”来表达,如以下案例所示。(本书程序的关键代码都用粗体表示。)

案例名称:精确搜索

程序名称:exact.asp

<%

set conn=server.CreateObject("adodb.connection")

set rs=server.CreateObject("adodb.recordset")

conn.Open"server=LOCALHOST;driver={sql server};uid=sa;pwd=;

database=pubs;"

search="White"

sql="select*from authors where au lname=′"& search &"""

rs.Open sql,conn,1,1

while not rs.eof

response.Write rs("au id")&"——"& rs("au lname")&"——"& rs("au fname")&"<br>"

rs.movenext

wend

rs.close

conn.close

set rs=nothing

set conn=nothing

%>

这个程序将语句"select*from authors where au lname="white""传递给数据库服务器。

它直接在数据库中执行。这就是一个用“=”表达的精确检索。

3.2.2使用ASP实现范围搜索

范围搜索,就是设定搜索条件在某个范围之中,然后进行搜索。下面的案例演示了基于数据库的范围搜索。

案例名称:范围搜索

程序名称:range.asp

<%

set conn=server.CreateObject("adodb.connection")

set rs=server.CreateObject("adodb.recordset")

conn.Open"server=LOCALHOST;driver={sql server};uid=sa;pwd=;database=pubs;"

sql="select*from authors where au lname in("White","Green",′Carson")"

rs.Open sql,conn,1,1

while not rs.eof

response.Write rs("au id")&"——"& rs("au lname")&"——"& rs("au fname")&"<br>"

rs.movenext

wend

rs.close

conn.close

set rs=nothing

set conn=nothing

%>

这个程序将语句"select*from authors where au lname in("White","Green",′Carson")"传递给数据库服务器。它直接在数据库中执行。这就是一个用“in”表达的精确检索。

常用的还有between谓词实现的搜索,如以下的案例所示。

案例名称:between谓词的使用

程序名称:between.asp

<%

set conn=server.CreateObject("adodb.connection")

set rs=server.CreateObject("adodb.recordset")

conn.Open"server=localhost;driver={sql server};uid=sa;pwd=;database=pubs;"

sql="select*from authors where contract between1and2"

rs.Open sql,conn,1,1

while not rs.eof

response.Write rs("au id")&"——"& rs("au lname")&"——"& rs("au fname")&"<br>"

rs.movenext

wend

rs.close

conn.close

set rs=nothing

set conn=nothing

%>

这个程序将语句"select*from authors where contract between1and2"传递给数据库服务器。它直接在数据库中执行的结果。这就是一个用“between”表达的精确检索。

常规的数据库搜索,就是基于标准SQL语句的句法进行的数据查询。通常要使用“=”进行精确搜索,使用“between”、“in”符号设定范围搜索,使用“like”实现模糊搜索。结合数据库的内置函数,还可以实现其他类型的搜索,因数据库而异。

3.2.3使用ASP实现模糊搜索

与前两类搜索相比,模糊搜索用得更加广泛,在标准SQL语句中使用“like”谓词来实现,通常的模糊匹配模式有“%”和“”。“%”表示任意多个任意字符,“”表示一个任意字符。下面的案例演示了它们的用法。

案例名称:模糊搜索-1

程序名称:fuzzy1.asp

<%

set conn=server.CreateObject("adodb.connection")

set rs=server.CreateObject("adodb.recordset")

conn.Open"server=localhost;driver={sql server};uid=sa;pwd=;database=pubs;"

sql="select*from authors where au lname like"hite""

rs.Open sql,conn,1,1

while not rs.eof

response.Write rs("au id")&"——"& rs("au lname")&"——"& rs("au fname")&"<br>"

rs.movenext

wend

rs.close

conn.close

set rs=nothing

set conn=nothing

%>

这里用的模式是“hite”,也就是在“hite”前面有一个字符,在authors表格的au lname字段中只有“White”符合要求。语句"select*from authors where au lname like"hite""在数据库中的运行结果。

使用“%”进行模式匹配的情况比“”多一些,下面的案例演示了它的用法。

案例名称:模糊搜索-2

程序名称:fuzzy2.asp

<%

set conn=server.CreateObject("adodb.connection")

set rs=server.CreateObject("adodb.recordset")

conn.Open"server=localhost;driver={sql server};uid=sa;pwd=;database=pubs;"

sql="select*from authors where au lname like"%M%""

rs.Open sql,conn,1,1

while not rs.eof

response.Write rs("au id")&"——"& rs("au lname")&"——"& rs("au fname")&"<br>"

rs.movenext

wend

rs.close

conn.close

set rs=nothing

set conn=nothing

%>

模式“%M%”匹配的是所有au lname字段包含字母“M”的记录。

在前两个例子的基础上,做一个稍微复杂一点测试,将模式变为“a%e%”,符合这个模式的au lname字段包括MacFeather,Karsen,Panteley。在查询分析器中执行语句"select*from authors where au lname like"a%e%""。

3.3使用ASP.NET实现常规的数据库搜索

这一节的案例演示了基于数据库的搜索,使用ASP.NET1.1技术,以及SQL Server2000数据库中的pubs数据库和authors表格。

3.3.1使用ASP.NET实现精确搜索

精确搜索,使用“=”来表达,如下面案例所示。

案例名称:精确搜索

程序名称:exact.aspx

<%@ Import Namespace="System.Data"%>

<%@ Import Namespace="System.Data.SqlClient"%>

<script language="VB"runat="server">

Sub Page Load(SenderAs Object,EAs EventArgs)

Dim connAs New SqlConnection

("server=localhost;database=pubs;uid=sa;pwd=;")

dim searchAs String="White"

dim sqlAs String="select*from authors where au lname=′"& search &"""

Dim cmdAs New SqlCommand(sql,conn)

Dim drAs SqlDataReader

try

conn.Open()

dr=cmd.ExecuteReader()

while dr.read

response.write(dr("au id")&"——"& dr("au lname")&"——"& dr("au fname")&"<br>")

end while

catch ex as Exception

response.write("出错了!")

finally

if not dr is nothing then

dr.close

end if

if not conn is nothing then

conn.close

end if

end try

End Sub

</script>

3.3.2使用ASP.NET实现范围搜索

案例名称:范围搜索

程序名称:range.aspx

<%@ Import Namespace="System.Data"%>

<%@ Import Namespace="System.Data.SqlClient"%>

<script language="VB"runat="server">

Sub Page Load(SenderAs Object,EAs EventArgs)

Dim connAs New SqlConnection

("server=localhost;database=pubs;uid=sa;pwd=;")

dim sqlAs String=

"select*from authors where au lname in("White","Green",′Carson")"

Dim cmdAs New SqlCommand(sql,conn)

Dim drAs SqlDataReader

try

conn.Open()

dr=cmd.ExecuteReader()

while dr.read

response.write(dr("au id")&"——"& dr("au lname")&"——"& dr("au fname")&"<br>")

end while

catch ex as Exception

response.write("出错了!")

finally

if not dr is nothing then

dr.close

end if

if not conn is nothing then

conn.close

end if

end try

End Sub

</script>

3.3.3使用ASP.NET实现模糊搜索

这里演示使用“%”进行模式匹配的情况。

同类推荐
  • 元素与光

    元素与光

    《元素与光》分上下篇分别介绍了我们一些常见的元素和光,以及我们日常生活中哪些东西用到了它们。主要内容包括:古今元素趣谈;太空中元素的合成;门捷列夫与元素周期律;第一号元素——氢;火焰空气——氧等。
  • 开阔眼界的文学故事

    开阔眼界的文学故事

    文学是什么?文学就是人学。文学是人们日常生活的反映,也是人类和自然界关系的再现。文学既可以揭示生活的本质,又可以体现人们的喜怒哀乐。人类如果没有文学,其生活就会枯燥无味。因此,伟大的文学家是人类灵魂的工程师。
  • 学生主题阅读空间(自然人文卷)小博士讲世界遗产

    学生主题阅读空间(自然人文卷)小博士讲世界遗产

    “学生主题阅读空间(自然人文卷)”系列丛书,是一套介绍全世界自然人文地理的丛书。内容包括世界遗产、公园、城堡、瀑布、广场、剧院等。该丛书图文并茂,分类详细,更加方便学生的阅读,是一套很有实用价值的阅读读物。
  • 教师的28个怎么办-教师如何适应课程改革

    教师的28个怎么办-教师如何适应课程改革

    任何改革都是以一定的理论为基础,在一定的理论指导下进行的,课程改革也不例外。作为教育系统的核心,课程与许多学科的理论有联系,并且以他们为科学的依据,毫无疑问,课程改革的出发点便是以与之相关的学科理论为依据,调整与之不一致的部分,使课程的方方面面趋向合理化。
  • 中华民族传统美德故事文库——崇尚科学(一)

    中华民族传统美德故事文库——崇尚科学(一)

    本丛书筛选内容主要遵循以下原则要求:(1)坚持批判继承思想,取其精华、去其糟粕。既不全盘肯定,也不全盘否定。坚持抽象继承、演绎发展、立足当代、为我所用。(2)坚持系统整体的原则。注意各历史时期分布;注意各民族的进步人物;注意各层面人物;注意人物各侧面。做到:竖看历史五千年,纵向成条线;横看美德重实践,横向不漏面。(3)坚持古为今用,为我所用原则。在发掘美德资源时,特别挖掘古代人物故事、言论,注重寻找挖掘各阶层、各民族的传统公德、通德、同德;注重人民性、民主性、进步性、发展性、普遍性、抽象性,不求全古代,不求全个体。
热门推荐
  • 宠物小精灵之超神战队

    宠物小精灵之超神战队

    当你看到书名时,你会觉得这是一本单纯热血的同人小说,实则不然。一缕星光,让普通青年小凡奇迹地穿越来到这个世界,从天而来的神秘白玉是什么?那一块快分散在各地的神秘石板又是什么?频频出现的恐怖天灾,背后蕴含着什么?宇宙深夜下堕落的王者,地狱一般的制裁者,它们是谁?彼此有着什么特殊的关系?暗流涌动的世界,邪恶势力之间的惊天阴谋,那在神奇宝贝联盟后如顶天柱一般的存在是什么?一场将世界抛上赌注台的动乱正在酝酿。一切的谜题,在乱世来临之前,没有人能够知晓……
  • 重生之商门娇女

    重生之商门娇女

    谢燕娘上辈子为了争一口气,嫁给一个不爱的男人,最后被折磨致死。重生回来,她绝不会重蹈覆辙。收复忠仆,寻找靠山,报复渣男,跟家中两个姐姐周旋。慢慢来,这辈子她有足够的时间让前夫尝尽苦楚,求而不得。嫡母想要把她送到渣男手里?做梦!大姐想要渣男?赶紧收了去。二姐想要把自己当踏脚板,好攀上高枝?门都没有!卷起袖子,一个个都收拾了。等等,靠山大人怎么步步逼近……
  • 魔武合流

    魔武合流

    此书已废,无可挽救。新书开张,欢迎捧场。
  • 剑圣拯救世界

    剑圣拯救世界

    虚空将吞噬世界。拥有神秘玉石之人,得到抵抗虚空的力量。想要更强,那就去掠夺。即便是剑圣,也想要拯救世界。
  • 圣王归来

    圣王归来

    一个男人争斗的世界一个独领风骚的强者一个无与伦比的雪域
  • 当习惯变成了一种莫名的爱

    当习惯变成了一种莫名的爱

    小涛是一位远离家乡的都市打工族,初入职场两年多。每天都是公司与住处两点一线,填补他日常时光的唯一事情就是在社交软件上分享生活,可惜有一天,一个陌生人打破了原有的平衡,让他发现,自己对于这种原有的平衡是如此的依赖,而打破这个平衡的人,却对他产生了重要的影响。
  • 大道都市

    大道都市

    一场平淡无奇的校园生活,一个个神秘莫测的家族势力牵扯其中,为的是利益的争夺,还是权利的博弈,就让我平凡的郝天伤一一来会!!(第一次写,写的不好,希望大家给我写下去的动力,空空谢谢了)
  • 超神训练系统

    超神训练系统

    一个超神训练营系统闯进唐亮的身体,每天都有人吵吵着要进来训练,而训练费用却是他们自身的技能。“死神来了世界-死神请求训练,宿主是否同意!”唐亮想了想死神的能力后,淡淡说道:“他那能力虽然鸡肋,却也勉强能用,就让他训练吧。”“倩女幽魂世界-宁采臣请求训练,宿主是否同意!”“不同意,他也就一个撩妹技能,还撩的是鬼。。”唐亮搂了搂身边的两个美女,笑道:“人我都忙不过来呢”
  • 世界著名科幻故事精华·第一卷

    世界著名科幻故事精华·第一卷

    科幻故事是西方近代文学的一种新体裁,诞生于19世纪,是欧洲工业文明崛起后特殊的文化现象之一。人类在19世纪,全面进入以科学发明和技术革命为主导的时代后,一切关注人类未来命运的文艺题材,都不可避免地要表现未来的科学技术。而这种表现,在工业革命之前是不可能的。
  • 怜悯

    怜悯

    《怜悯》讲述了“我”和几位狱警同事押送犯人保外就医的经历,细致刻划了“我”同情病重的犯人但又害怕同事嘲笑的复杂心理。当犯人最终在无视与冷漠之中、在最热闹的人群深处孤独死去,怜悯作为一种朴素而又高贵的情感,最终击中了读者的心。