中文字幕在线一区二区在线,久久久精品免费观看国产,无码日日模日日碰夜夜爽,天堂av在线最新版在线,日韩美精品无码一本二本三本,麻豆精品三级国产国语,精品无码AⅤ片,国产区在线观看视频

      淺析數據庫管理系統中模糊查詢技術的正確使用

      時間:2024-08-03 15:04:00 計算機應用畢業論文 我要投稿
      • 相關推薦

      淺析數據庫管理系統中模糊查詢技術的正確使用


         【論文關鍵詞】:數據庫;系統;模糊查詢

         【論文摘要】:主要介紹在數據庫系統中實現模糊查詢的方法與技巧,提供了能實現真正模糊查詢的二個通用函數的源程序,特別是介紹了結構化查詢SQL中鮮為人知的通配符的使用方法。
        
       
         在數據庫管理系統中,查詢是一個很重要的內容。然而,在多數情況下人們不能準確知道作為查詢條件的字段內容,如:某字段內容為"陵師范高等專科學校",查詢者可能只知道其簡稱"陵師專"或"師專",這時,為保證能查到滿足條件的數據記錄,只能進行模糊查詢。下面從編程的角度談談在FoxPro 2.5b中,實現模糊查詢的方法。
        
        一、簡單的模糊查詢方法
        
        1. 利用比較操作符"="進行模糊查詢
        先把SET EXACT的設置置為OFF,這時,"="用于兩個字符表達式之間作比較,其規則是:"="右邊的字符逐個與"="左邊相同位置的字符進行比較,只要遇到其中一個字符不相等,或者"="右邊的字符表達式結束,比較操作就結束。所以,"abc"="abc","abc"="ab","ab_"="ab","ab"=""的比較結果均為真(.T.)。可見,這種方法的模糊性是不能令人滿意的。
        2. 利用"$"進行包含比較,其模糊查詢的效果就比用"="時好得多
        這種方法是在"$"右邊的字符表達式中查找"$"左邊的字符表達式,若找到返回邏輯真(.T.),否則返回邏輯假(.F.)。用這種方法只要"$"左邊的字符表達式的每一個字符在"$"右邊的字符表達式中存在且位置不間斷,查找就能成功,然而對于諸如前面提到的"陵師專"或"師專"之類的簡稱,其查找結果為邏輯假(.F.)。
        由此可見,直接利用"="和"$"進行比較操作是不能太"模糊"的。
        
        二、查詢條件為縮略語或簡稱的模糊查詢方法
        
        縮略語或簡稱在地名、單位名稱中使用非常廣泛。通常,縮略語或簡稱是由全稱中的某些排列位置不連續的字符組成的,因此,通過設置不同長度的字符串進行比較的規則,或者利用包含比較符"$",是不能對縮略語或簡稱進行模糊查詢的。這時可編寫一通用的自定義函數,將用戶輸入的查詢條件(<字符串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字符,所以每次取二個相鄰字符進行測試(讓ZFBJ.PRG中的K=2)。這樣做,一是可以減少測試比較的次數,提高程序運行速度。二是當<字符串2>中含有數字、字母等半角字符時,可以減少滿足條件的記錄數目,提高查詢的命中率。然而,若查詢條件中含有英文縮寫,則每次只能取一個ASCII字符進行測試(讓ZFBJ.PRG中的K=1)。
        本函數的源程序如下:
        * 程序名稱: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的屏幕生成器編寫過一通用查詢程序,其通用性和執行速度表現都非常好。

      【淺析數據庫管理系統中模糊查詢技術的正確使用】相關文章:

      數據庫管理系統中的模糊查詢技術03-03

      淺析“預付賬款”的正確使用與管理03-24

      淺析無線蜂窩通信系統中的定位技術03-27

      在電子商務中如何正確的使用數據挖掘技術03-20

      淺析集成制造系統的技術構成03-17

      淺析數據庫技術在海河流域水資源綜合規劃中的應用03-16

      VB5.0中數據庫查詢模塊的實現03-03

      基于Web的交互式數據庫查詢技術03-20

      信息檢索中的查詢擴展技術03-07

      主站蜘蛛池模板: 国产一级内射在线观看| 阿v视频在线| 青青草免费在线播放视频五月天| 亚洲夫妻性生活视频网站| 国产AV无码无遮挡毛片| 万载县| 人妻中出中文字幕一区二区| 人妻有码中文字幕在线不卡| 沧州市| 西和县| 999久久久免费精品国产牛牛| 久久道精品一区二区三区| av亚洲在线一区二区| 韩城市| 麻豆国产VA免费精品高清在线| 亚洲av综合色区手机| 99久久免费精品色老| 田林县| av免费网站在线免费观看 | 久久精品国产av大片| 宝坻区| 大冶市| 于田县| 盐池县| 久久国产精品99精品国产987| 久久这里只有精品少妇| 91精品亚洲一区二区三区| 69堂在线无码视频2020| 日本二区三区视频免费观看| 洞口县| 上高县| 97色人阁俺也去人人人人人| 日照市| 长乐市| 鄂托克旗| 精品在免费线中文字幕久久| 南召县| 亚洲国产精品性色av| 新民市| 亚洲av日韩av一卡二卡| 被黑人操的嗷嗷叫视频|