浅析数据库管理系统中模糊查询技术的正确使用(2)
作者:佚名; 更新时间:2014-12-05

  本函数的源程序如下:
  * 程序名称:ZFBJ.PRG
  * 程序功能:比较<字符串2>是否为<字符串1>的缩略语
  * 调用格式:ZFBJ(<字符串1>,<字符串2>)
  * 通常<字符串1>是一个字符型字段变量
  * 返 回 值:逻辑值 .T. 或 .F.
  * 使用环境:FoxPro 2.5b
  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))
  K=2
  FOR I = 1 TO J STEP K
  m.MC = SUBSTR(ALLTRIM(m.INMC),I,K)
  MCWZ = AT(m.MC,ALLTRIM(m.FIELD))
  IF MCWZ<>0
  m.FIELD = SUBSTR(ALLTRIM(m.FIELD),MCWZ+K)
  fhz = .T.
  ELSE
  fhz = .F.
  EXIT
  ENDIF
  ENDFOR
  IF m.talkstat = "ON"
  SET TALK ON
  ENDIF
  IF m.compstat = "ON"
  SET COMPATIBLE ON
  ENDIF
  RETURN fhz
  使用举例:设内存变量m.field,其值为用户输入的用户名称的简称,如"涪师专",信捷职称论文写作发表网,现在要在KTJBK.DBF中查询用户名称(字段名)为"涪陵师范高等专科学校",或为"涪陵师专",或为"涪师专"的全部记录,可以先将满足条件的记录拷贝到一临时数据库TEMP.DBF中,然后再浏览,浏览完毕删除临时数据库TEMP.DBF。其程序如下:
  m.field="涪师专"
  SELECT 0
  USE KTJBK
  COPY TO TEMP.DBF FOR ZFBJ(用户名称,m.field)
  SELECT 0
  USE TEMP
  BROWSE NOEDIT
  USE
  DELETE FILE
  TEMP.DBF
  SELECT KTJBK
  USE
  通过上面介绍的自定义函数实现了真正的模糊查询,然而令人遗憾的是它的速度表现总
  使人感到美中不足。幸好在FoxPro中引入了结构化查询语言SELECT-SQL。
  
    三、 利用FoxPro中SELECT-SQL语句的模糊查询方法
  结构化查询语言SQL是FoxPro中值得骄傲的特色之一。利用SQL的SELECT语句,可以非常方便、极其快速地进行十分复杂的查询操作。特别值得推荐的是ELECT-SQL语句中的WHERE参数支持通配符"%(百分符号)"和"_(下划线符号)",因此,对于查询条件为缩略语或简称的情况,可以非常简单地实现真正的模糊查询。这里,百分符号"%"代表0个或0个以上的任意字符,下划线符号"_"代表1个任意字符,它们只能与运算符LIKE搭配使用。
  使用举例:设内存变量m.field,其值为用户输入的用户名称的简称,如"涪师专",现在要在KTJBK.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 KTJBK ;
  WHERE KTJBK.用户名称 LIKE (mc_cxtj) ;
  INTO CURSOR TEMP
  程序说明:本程序运行时,先将m.field = "涪师专" 中插入四个通配符"%",得到
  mc_cxtj ="%涪%师%专%",然后利用SQL的SELECT语句,从数据库KTJBK.DBF中选出字段变量"用户名称"符合"%涪%师%专%"格式的所有记录,输出到一个虚拟临时数据库TEMP.DBF中。
  利用FoxPro中的结构化查询语言SELECT-SQL可以编写出很漂亮的通用查询程序。作者在数据库管理系统的开发实践中,曾用FoxPro的屏幕生成器编写过一通用查询程序,其通用性和执行速度表现都非常好。

核心期刊快速发表
Copyright@2000-2030 论文期刊网 Corporation All Rights Reserved.
《中华人民共和国信息产业部》备案号:ICP备07016076号;《公安部》备案号:33010402003207
本网站专业、正规提供职称论文发表和写作指导服务,并收录了海量免费论文和数百个经国家新闻出版总署审批过的具有国内统一CN刊号与国际标准ISSN刊号的合作期刊,供诸位正确选择和阅读参考,免费论文版权归原作者所有,谨防侵权。联系邮箱:256081@163.com