




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
數據庫管理系統中查詢技術
內容提要主要介紹在數據庫管理系統中實現模糊查詢的方法與技巧,提供了能實現真正模糊查詢的二個通用函數的源程序,特別是介紹了結構化查詢語言SQL中鮮為人知的通配符的使用方法。
關鍵詞FoxPro模糊查詢SELECT-SQL通配符
在數據庫管理系統中,查詢是一個很重要的內容。然而,在多數情況下人們不能準確知道作為查詢條件的字段內容,如:某字段內容為“涪陵師范高等專科學校”,查詢者可能只知道其簡稱“涪陵師專”或“涪師專”,這時,為保證能查到滿足條件的數據記錄,只能進行模糊查詢。下面從編程的角度談談在中,實現模糊查詢的方法。
一、簡單的模糊查詢方法
①利用比較操作符“=”進行模糊查詢。先把SETEXACT的設置置為OFF,這時,“=”用于兩個字符表達式之間作比較,其規則是:“=”右邊的字符逐個與“=”左邊相同位置的字符進行比較,只要遇到其中一個字符不相等,或者“=”右邊的字符表達式結束,比較操作就結束。所以,"abc"="abc","abc"="ab","ab_"="ab","ab"=""的比較結果均為邏輯真。可見,這種方法的模糊性是不能令人滿意的。
②利用“$”進行包含比較,其模糊查詢的效果就比用“=”時好得多。這種方法是在“$”右邊的字符表達式中查找“$”左邊的字符表達式,若找到返回邏輯真,否則返回邏輯假。用這種方法只要“$”左邊的字符表達式的每一個字符在“$”右邊的字符表達式中存在且位置不間斷,查找就能成功,然而對于諸如前面提到的“涪陵師專”或“涪師專”之類的簡稱,其查找結果為邏輯假。
由此可見,直接利用“=”和“$”進行比較操作是不能太“模糊”的。
二、查詢條件為縮略語或簡稱的模糊查詢方法
縮略語或簡稱在地名、單位名稱中使用非常廣泛。通常,縮略語或簡稱是由全稱中的某些排列位置不連續的字符組成的,因此,通過設置不同長度的字符串進行比較的規則,或者利用包含比較符“$”,是不能對縮略語或簡稱進行模糊查詢的。這時可編寫一通用的自定義函數,將用戶輸入的查詢條件與字符型字段變量進行逐字比較,如果是的縮略語或簡稱,則返回邏輯真否則返回邏輯假,從而實現模糊查詢。
下面將作者所編寫的自定義函數介紹給讀者,以供參考。
設計思想:此函數必須是一個通用函數。為此,執行時可先接受二個參數──和。從的左邊開始取其第
一、二個字符X1,用AT函數測試X1在中的位置S1,如果S1不為0,就將中包含X1以及左邊部分的字符截掉,并取中的第
三、四個字符X2,用AT函數測試X2在的剩余部分中的位置S2,若S2不為0,就將的剩余部分中包含X2以及左邊部分的字符截掉……,直到將中的字符取完并在中測試完為止,最后本函數返回邏輯真。在這個過程中只要有一次測試不成功,則退出本函數并返回邏輯假。因為一個漢字占二個ASCII字符,所以每次取二個相鄰字符進行測試。這樣做,一是可以減少測試比較的次數,提高程序運行速度。二是當中含有數字、字母等半角字符時,可以減少滿足條件的記錄數目,提高查詢的命中率。然而,若查詢條件中含有英文縮寫,則每次只能取一個ASCII字符進行測試。
本函數的源程序如下:
*程序名稱:
*程序功能:比較是否為的縮略語
*調用格式:ZFBJ
*通常是一個字符型字段變量
*返回值:邏輯值.T.或.F.
*使用環境:
,
PRIVATEALL
IF0
=SUBSTR,MCWZ+K)
fhz=.T.
ELSE
fhz=.F.
EXIT
ENDIF
ENDFOR
="ON"
SETTALKON
ENDIF
pstat="ON"
SETCOMPATIBLEON
ENDIF
RETURNfhz
使用舉例:設內存變量,其值為用戶輸入的用戶名稱的簡稱,如“涪師專”,現在要在中查詢用戶名稱為“涪陵師范高等專科學校”,或為“涪陵師專”,或為“涪師專”的全部記錄,可以先將滿足條件的記錄拷貝到一臨時數據庫中,然后再瀏覽,瀏覽完畢刪除臨時數據庫。其程序如下:
="涪師專"
SELECT0
USEKTJBK
SELECT0
USETEMP
BROWSENOEDIT
USE
DELETEFILE
SELECTKTJBK
USE
通過上面介紹的自定義函數實現了真正的模糊查詢,然而令人遺憾的是它的速度表現總使人感到美中不足。幸好在FoxPro中引入了結構化查詢語言SELECT-SQL。
三、利用FoxPro中SELECT-SQL語句的模糊查詢方法
結構化查詢語言SQL是FoxPro中值得驕傲的特色之一。利用SQL的SELECT語句
可以非常方便、極其快速地進行十分復雜的查詢操作。特別值得推薦的是ELECT-SQL語句中的WHERE參數支持通配符“%”和“_”,因此,對于查詢條件為縮略語或簡稱的情況,可以非常簡單地實現真正的模糊查詢。這里,百分符號“%”代表0個或0個以上的任意字符,下劃線符號“_”代表1個任意字符,它們只能與運算符LIKE搭配使用。
使用舉例:設內存變量,其值為用戶輸入的用戶名稱的簡稱,如“涪師專”,現在要在中查詢用戶名稱為“涪陵師范高等專科學校”,或為“涪陵師專”,或為“涪師專”的全部記錄,可以用下面的一段程序實現:
="涪師專"
mc_cxtj="%"
FORi=1TOLEN)STEP2
mc_cxtj=mc_cxtj+SUBSTR,i,2)+"%"
ENDFOR
SELECT*;
FROMKTJBK;
WHEREKTJBK.用戶名稱LIKE;
INTOCURSORTEMP
程序說明:本程序運行時,先將="涪師專"中插入四個通配符“%”,得到mc_cxtj="%涪%師%專%",然后利用SQL的SELECT語句,從數據庫中選出字段變量“用戶名稱”符合“%涪%師%專%”格式的所有記錄,輸出到一個虛擬臨時數據庫中。
利用FoxPro中的結構化查詢語言SELECT-SQL可以編寫出很漂亮的通用查詢程序。筆者在數據庫管理系統的開發實踐中,曾用FoxPro的屏幕生成器編寫過一通用查詢程序,其通用性和執
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 福建漳州三模數學試卷
- 廣東高分突破九年級數學試卷
- 肛腸術后護理課件
- 高三寫不完的數學試卷
- 肋骨骨折護理
- 2024年09月湖北省農村信用社聯合社網絡信息中心度招考35名勞務派遣科技專業人才筆試歷年參考題庫附帶答案詳解
- 2025至2030袋泡茶市場前景分析及發展趨勢分析與未來投資戰略咨詢研究報告
- 高血糖引起的并發癥的早期干預
- 2025至2030寵物袋運動衫行業市場深度研究與戰略咨詢分析報告
- 2024年山東煙臺干部學院招聘教師筆試真題
- 2025屆浙江省杭州濱江區六校聯考七年級英語第二學期期末質量跟蹤監視模擬試題含答案
- T/CACEM 39-2024交通企業標準化評價指南
- 車子刮擦協議書
- 2025春國開《創業基礎》形考任務1-4答案
- 詩歌鑒賞|蘇軾《鶴嘆》注釋+賞析+試題
- 天航題庫理論SOP復習試題及答案
- 2024年質量工程師備考常見問答試題及答案
- 檢驗檢測機構質量手冊程序文件質量記錄合集(依據2023年版評審準則)
- 2025-2030全球及中國管道運輸服務行業市場現狀供需分析及投資評估規劃分析研究報告
- 安慶市桐城經開區建設投資集團有限公司招聘筆試題庫2025
- JJF 2244-2025公共機構重點用能單位能源資源計量審查規范
評論
0/150
提交評論