模糊查询在有线电视数据库管理系统中的应用

来源 :电脑知识与技术·学术交流 | 被引量 : 0次 | 上传用户:lm4194
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:在数据库管理系统中,“查询”是一个很重要的内容。然而,在多数情况下人们在数据库开发中并不能准确地应用模糊查询的方法。现从编程的角度对此进行了研究,总结在有线电视数据库管理系统中(VFoxPro)实现模糊查询的一些通配符的使用方法。
  关键词:模糊查询;数据库管理;应用
  中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)21-30505-02
  
  Fuzzy Inquest Application in Cable TV Database Manage System
  LI Peng-cheng
  (Gaoyou Radio and Television Situation,Yangzhou 225600,China)
  Abstract: Inthe database manage system, “inquest” is very important content. But in most cases,we can not apply the method of “fuzzy inquest” accurately. Now, Iresearchabout it and summarize the using method of some widcard to realizefuzzy inquestin database system .
  Key words: fuzzy inquest;database manage;apply
  
  1 引言
  
  本人从事数据库开发多年,先后自编了“有线电视管理系统、电视摇奖系统”,深切感受到“查询”是一个很重要的内容。然而,在多数情况下人们并不能知道查询对象在数据库字段中的准确内容,如:某字段内容为“高邮市广播电视局”,查询者可能只知道其简称“广播电视局”或“广电局”,这时,为保证能查到满足条件的数据记录,只能进行模糊查询。
  
  2 简单的模糊查询方法
  
  2.1 利用比较操作符“=”进行模糊查询
  先把SET EXACT的设置为OFF,这时,“=”用于两个字符表达式之间作比较,其规则是:“=”右边的字符逐个与“=”左边相同位置的字符进行比较,只要遇到其中一个字符不相等,或者“=”右边的字符表达式结束,比较操作就结束。所以,"abc"="abc","abc"="ab","ab_"="ab","ab"=""的比较结果均为逻辑真(.T.)。可见,这种方法的模糊性是不能令人满意的。
  2.2 利用“$”进行包含比较,其模糊查询的效果就比用“=”时好得多
  这种方法是在“$”右边的字符表达式中查找“$”左边的字符表达式,若找到返回逻辑真(.T.),否则返回逻辑假(.F.)。用这种方法只要“$”左边的字符表达式的每一个字符在“$”右边的字符表达式中存在且位置不间断,查找就能成功,然而对于诸如前面提到的“广播电视局”或“广电局”之类的简称,其查找结果为逻辑假(.F.)。
  由此可见,直接利用“=”和“$”进行比较操作是不能太“模糊”的。
  
  3 查询条件为缩略语或简称的模糊查询方法
  
  缩略语或简称在地名、单位名称中使用非常广泛。通常,缩略语或简称是由全称中的某些排列位置不连续的字符组成的,因此,通过设置不同长度的字符串进行比较的规则,或者利用包含比较符“$”,是不能对缩略语或简称进行模糊查询的。这时可编写一通用的自定义函数,将用户输入的查询条件(<字符串2>)与字符型字段变量(<字符串1>)进行逐字比较,如果<字符串2>是<字符串1>的缩略语或简称,则返回逻辑真(.T.)否则返回逻辑假(.F.),从而实现模糊查询。
  下面将本人所编写的自定义函数介绍给大家,仅供参考。
  设计思想:此函数必须是一个通用函数。为此,执行时可先接受二个参数──<字符串1>和<字符串2>。从<字符串2>的左边开始取其第一、二个字符X1,用AT( )函数测试X1在<字符串1>中的位置S1,如果S1不为0,就将<字符串1>中包含X1以及左边部分的字符截掉,并取<字符串2>中的第三、四个字符X2,用AT( )函数测试X2在<字符串1>的剩余部分中的位置S2,若S2不为0,就将<字符串1>的剩余部分中包含X2以及左边部分的字符截掉……,直到将<字符串2>中的字符取完并在<字符串1>中测试完为止,最后本函数返回逻辑真(.T.)。在这个过程中只要有一次测试不成功(即Sn=0),则退出本函数并返回逻辑假(.F.)。因为一个汉字占二个ASCII字符,所以每次取二个相邻字符进行测试(让 LPC.PRG中的KK=2)。这样做,一是可以减少测试比较的次数,提高程序运行速度。二是当<字符串2>中含有数字、字母等半角字符时,可以减少满足条件的记录数目,提高查询的命中率。然而,若查询条件中含有英文缩写,则每次只能取一个ASCII字符进行测试(让LPC.PRG中的KK=1)。
  本函数的源程序如下:
   *************************************************************
  * 程序名称:LPC.PRG
  * 程序功能:比较<字符串2>是否为<字符串1>的缩略语
  * 调用格式:LPC(<字符串1>,<字符串2>)
  * 通常<字符串1>是一个字符型字段变量
  * 返 回 值:逻辑值 .T. 或 .F.
  * 使用环境:VFoxPro
  *************************************************************
  PARAMETERS m.FIELD, m.INMC
  PRIVATE ALL
  IF (PARAMETERS( ) < 2) ;
  OR EMPTY(ALLTRIM(m.FIELD));
  OR EMPTY(ALLTRIM(m.INMC))
  RETURN .F.
  ENDIF
  IF SET("TALK") = "ON"
  SET TALK OFF
  m.talkstat = "ON"
  ENDIF
  m.compstat = SET("COMPATIBLE")
  SET COMPATIBLE FOXPLUS
  J = LEN(ALLTRIM(m.INMC))
  KK=2
  FOR I = 1 TO J STEP KK
  m.MC = SUBSTR(ALLTRIM(m.INMC),I,KK)
  MCWZ = AT(m.MC,ALLTRIM(m.FIELD))
  IF MCWZ<>0
  m.FIELD = SUBSTR(ALLTRIM(m.FIELD),MCWZ KK)
  LPCC = .T.
  ELSE
  LPCC = .F.
  EXIT
  ENDIF
  ENDFOR
  IF m.talkstat = "ON"
  SET TALK ON
  ENDIF
  IF m.compstat = "ON"
  SET COMPATIBLE ON
  ENDIF
  RETURN LPCC
  使用举例:设内存变量m.field,其值为用户输入的用户名称的简称,如“广电局”,现在要在PP.DBF中查询用户名称(字段名)为“高邮市广播电视局”,或为“广播电视局”,或为“广电局”的全部记录,可以先将满足条件的记录拷贝到一临时数据库TEMP.DBF中,然后再浏览,浏览完毕删除临时数据库TEMP.DBF。其程序如下:
  m.field="广电局"
  SELECT 0
  USE PP
  COPY TO TEMP.DBF FOR PP(用户名称,m.field)
  SELECT 0
  USE TEMP
  BROWSE NOEDIT
  USE
  DELETE FILE TEMP.DBF
  SELECT PP
  USE
  通过上面介绍的自定义函数实现了真正的模糊查询,然而令人遗憾的是它的速度表现总使人感到美中不足。幸好在VFoxPro中引入了结构化查询语言SELECT-SQL。
  
  4 利用VFoxPro中SELECT-SQL语句的模糊查询方法
  
  结构化查询语言SQL是VFoxPro中的特色。利用SQL的SELECT语句可以非常方便、极其快速地进行十分复杂的查询操作。特别值得推荐的是SELECT-SQL语句中的WHERE参数支持通配符“%(百分符号)”和“_(下划线符号)”,因此,对于查询条件为缩略语或简称的情况,可以非常简单地实现真正的模糊查询。这里,百分符号“%”代表0个或0个以上的任意字符,下划线符号“_”代表1个任意字符,它们只能与运算符LIKE搭配使用。
  使用举例:设内存变量m.field,其值为用户输入的用户名称的简称,如“广电局”,现在要在PP.DBF中查询用户名称(字段名)为“高邮市广播电视局”,或为“广播电视局”,或为“广电局”的全部记录,可以用下面的一段程序实现:
  m. field="广电局"
  mc_cxtj="%"
  FOR i=1 TO LEN(ALLTRIM(m.field)) STEP 2
  mc_cxtj=mc_cxtj SUBSTR(ALLTRIM(m.field),i,2) "%"
  ENDFOR
  SELECT * ;
  FROM PP ;
  WHERE PP.用户名称 LIKE (mc_cxtj) ;
  INTO CURSOR TEMP
  程序说明:本程序运行时,先将m.field = "广电局" 中插入四个通配符“%”,得到mc_cxtj ="%广%电%局%",然后利用SQL的SELECT语句,从数据库PP.DBF中选出字段变量“用户名称”符合"%广%电%局%"”格式的所有记录,输出到一个虚拟临时数据库TEMP.DBF中。
  
  5 结论
  
  利用VFoxPro中的结构化查询语言SELECT-SQL可以编写出很漂亮的通用查询程序。笔者在数据库管理系统的开发实践中,曾用VFoxPro的屏幕生成器编写过有线电视通用查询程序,其通用性和执行速度表现都非常好。
  
  参考文献:
  [1] 李鼎.Visualfoxpro 3.0命令手册[M].清华大学出版社,1996.
  [2] 翁正科,潘广和.FoxPro应用程序300例[M].清华大学出版社,1995.
  [3] 翁正科.FoxPro 2.5 实用教程[M].清华大学出版社,1995.
其他文献
摘要:随着利用旧的页面布局的弊端逐渐暴露,新Web标准的重要性越来越被人们所重视。本文主要讨论了在新Web标准下的DIV CSS网页布局方法,这种方法使网页外观与结构分离,使站点的访问及维护更加容易,最后通过一个实例介绍了其基本操作流程。  关键词:网页布局;DIV;CSS样式  中图分类号:TP309文献标识码:A文章编号:1009-3044(2008)11-20343-04    1 早期常用
摘要:本文主要阐述了基于Web的教学研究管理系统的设计思想和具体实现方法。该系统是一个在Coldfusion平台上开发,使用CFML语言实现并最终基于B/S的Web服务系统。如今B/S结构已逐渐成为一种流行的MIS系统平台,因为它具有很好的易用性和通用性,充分实现了信息共享与交流且安全、高效,很好地克服了传统办公自动化系统的弊端。基于Internet的MIS系统必将成为网络时代的新一代管理信息系统
电视剧《最美的乡村》塑造出了立体而丰满的人物形象,反映着十八大以来脱贫攻坚战役的中国故事,以三位扶贫书记为代表的精准扶贫经历,用饱满的情节和真实的乡土面貌展现国家形象,用现实主义创作手法奏响时代之歌,用影像记录和传播中国乡村之变、中国扶贫经验。  2020年是全面建成小康社会收官之年、脱贫攻坚战决胜之年,这就要求国产电视剧的创作应从当代中国社会变革出发,如描绘脱贫攻坚进程中的典型事件,利用独特的视
作为中国一衣带水的邻邦,日本文学和文化一直深受我国传统文化影响,并在发展过程中结合其独特审美情趣,形成独树一帜的民族文化。笔者在参与陕西省教育科学“十三五”规划2016年度课题“基于日语《国标》的本硕贯通式专业口译人才培养模式创新研究”(编号:SGH16H108)和西安外国语大学2018年教改重大项目“一流专业建设背景下的双学位双专业人才培养模式与管理研究”(编号:18BD02)时,学习了王姗姗的
《红楼梦》这部巨著展现了中国封建社会中错综复杂的人际关系,生动典型的人物塑造提升了其文学价值,拓展了其解读空间,也为相应的阅读教学指出了路径。服饰、器物等是小说中人物描写的重要背景,充分烘托出人物的性格,同时作为一种文化意象,为展现作品内涵、提升鉴赏高度提供了帮助。本文主要以《红楼梦》中的人物服饰为例,展示小说中的文化元素在阅读教学中的价值及解读途径,结合人物性格作一梳理,将服饰文化介绍与人物形象
摘要:随着通讯技术和计算机网络技术的不断发展,高校教学管理网络化已成为一个发展趋势。论文对基于ASP的网上选课系统开发的基本原理和系统结构作了阐述,主要介绍了基于学分制网上选课系统的系统分析、设计以及实现的思想和方法,并介绍该在线选课系统的主要功能模块。  关键词:B/S模式;学分制;选课系统  中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)35-2337-01  D
【关键词】语文教材,《汉语拼音方案》,汉语拼音教学  2020年7月,人民教育出版社(以下简称“人教社”)修订出版了《义务教育教科书教师教学用书·语文一年级上册》(以下简称“第三版教师教学用书”)。第三版教师教学用书将“Y、W”由“声母”修订为“隔音字母”。第二版第二单元教学要点是“正确认读a、o等6个单韵母,b、p等23个声母……”,第三版第二单元教学要点修改为“正确认读a、o等6个单韵母,y、
摘要:该文主要围绕Linux下中小企业服务器的配置展开,主要对企业内部典型服务器如Web、FTP 、EMAIL进行配置。  关键词:Linux;DNS;FTP;SendMail Apache  中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)36-2765-03  Configuration of Small and Medium Enterprises’ Server
摘要:本文主要介绍利用VB6.0串行通信编程的方法,利用MSComm控件实现计算机与计算机间的串口通信。  关键词:串口通信;VB6.0;MSCOMM控件  中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)08-10ppp-0c    随着互联网的不断发展,计算机间的相互通信已非常普遍,只要通过计算机的串行口就可以实现。而对于串口通信的编程软件,微软公司的Visual
汉字是世界上唯一至今仍在使用的古文字,资料表明,它至少有五千年以上的历史。以汉语汉字的全部历史为研究对象的科学就是汉语文字学。东汉许慎的《说文解字》宣告了汉语文字学的建立。传统的汉语文字学主要包括汉字形义研究、汉字字源和字用研究、构形研究、汉字文化研究四个部分,直到清末民初,随着西方科学研究方法的传入、甲骨文等古文字陆续被发现,以及文化教育事业的发展,学者们吸收西方研究方法,努力建立新型汉字学理论