sql空字符串判断函数_Excel数据还可这样来查询:用SQL查询输出工作表指定区域更高效!...
對于數(shù)據(jù)庫編程的朋友而言,SQL結(jié)構(gòu)化查詢技術(shù)并不陌生,也非常好用,憑借SQL強大的功能可以有效實現(xiàn)對數(shù)據(jù)庫的數(shù)據(jù)表數(shù)據(jù)的“增、刪、改、查”操作。一般而言,比較高級的語言環(huán)境,例如Java、C#、ASP.NET、PHP、Python等都經(jīng)常用到SQL方式訪問數(shù)據(jù)庫數(shù)據(jù),而我們Office高級辦公中Excel數(shù)據(jù)查詢等辦公操作較少用到過SQL方式,這主要是因為要使用SQL,還必須知道它的使用步驟,所以很多時候我們都是盡量運用Excel自身的查詢函數(shù)進行或者至多就是進入VBA后臺用簡單的IF判斷配合循環(huán)結(jié)構(gòu)去完成數(shù)據(jù)查詢。
數(shù)據(jù)量少的時候,用上面的IF判斷配合循環(huán)結(jié)構(gòu)去完成數(shù)據(jù)查詢方便,也感覺不出來時間的耗費問題。當(dāng)數(shù)據(jù)量很大時,可以明顯感覺出時間的耗費問題,同時程序的判斷語句也比較復(fù)雜。今天我們就要用簡單的SQL技術(shù)在VBA環(huán)境中取代冗長的IF判斷配合循環(huán)的方式,同時也大大提高了查詢效率。不僅如此,還可將用它的查詢結(jié)果輸出到指定的地方:Excel內(nèi)部的工作表區(qū)域或者列表控件。今天我們就先分享一下用SQL技術(shù)如何將查詢結(jié)果輸出到Excel內(nèi)部的工作表區(qū)域吧!
使用SQL技術(shù)前,我們必須知道其步驟過程使用規(guī)范:1-創(chuàng)建數(shù)據(jù)訪問的ADODB.Connection連接對象實例和ADODB.RecordSet數(shù)據(jù)記錄集合對象實例;2-帶條件的SQL字符串語句的的編輯; 3-數(shù)據(jù)連接對象實例的打開(例如:cnn.Open "Provider=Microsoft.ACE.OLEDB.15.0;Extended Properties=Excel 12.0;Data Source=" & DS_Path,其中:cnn-連接對象,DS_Path-數(shù)據(jù)源的完整路徑);4-結(jié)構(gòu)化查詢語句執(zhí)行(方式一:cnn.Excute (sql_str);方式二:rst.Open cnn, sql_str,A,B 其中:cnn是連接對象,sql_str是帶條件的SQL字符串語句,A是數(shù)據(jù)記錄游標(biāo)模式,B是數(shù)據(jù)訪問方式);5-將結(jié)構(gòu)化查詢的結(jié)果輸出;6-關(guān)閉數(shù)據(jù)記錄集合對象實例并置空、關(guān)閉數(shù)據(jù)連接對象實例并置空。
對于我們Office辦公工作的朋友們而言,也許上面的ADODB不是很清楚是什么意思,我們有必要在這里普及下其知識,它的英文全稱是“Active Data Objects DataBase”中文意思即是“活動數(shù)據(jù)對象數(shù)據(jù)庫”。好了,現(xiàn)在我們就來以模糊查詢方式如何實現(xiàn)SQL輸出到Excel工作表的數(shù)據(jù)區(qū)域?
一、SQL數(shù)據(jù)操作之一“查詢”操作的語句字符串書寫規(guī)范
(一)語法格式:
"Select 字段名列表 From 訪問的數(shù)據(jù)表 Where 條件列表 [Order by…] "
(二)幾點說明:
1-“字段名列表”規(guī)范形如“字段名1[,字段名2[,字段名3…]]…等,若是所有字段則直接用*號
2-訪問的數(shù)據(jù)表可以是數(shù)據(jù)庫表或者指定的Excel的數(shù)據(jù)區(qū)域,例如Excel類型的數(shù)據(jù)源表的格式應(yīng)該是中括號括起來(其他類型的數(shù)據(jù)庫表不需要中括號括起來)的形如[Sheet1$A1:D21]樣式,這里的$是Excel ODBC驅(qū)動程序識別Excel文件的工作表Sheet時追加的字符
3-條件列表是形如“Where 年齡>17 And 姓名=’張三’ Or 姓名 Like ‘%王%’”等形式,其中的“姓名 Like ‘%王%’”就是一種模糊查詢條件(尋找含姓名中含有“王”的人,%是通配符)
4- Order by…是按照各種方式查詢檢索,可選可省寫
二、準(zhǔn)備一個待查詢的Excel數(shù)據(jù)區(qū)域
我們輸入下面一片簡單的數(shù)據(jù)以備作查詢使用,并添加一個查詢交互按鈕,再增設(shè)一個數(shù)據(jù)驗證輸入的單元格作為姓名查詢的關(guān)鍵字輸入或選擇。如下圖所示
圖1 準(zhǔn)備的Excel工作表Sheet1查詢數(shù)據(jù)
三、體驗通過SQL進行的模糊查詢和精確查詢的結(jié)果輸出到Excel工作表給定的區(qū)域的情況
(一)在姓名查詢關(guān)鍵字輸入單元格中輸入模糊的關(guān)鍵字。如下圖所示
圖2 模糊查詢關(guān)鍵字輸入
(二)點擊按鈕,將在結(jié)果區(qū)域出現(xiàn)模糊查詢的結(jié)果數(shù)據(jù)。如下圖所示
圖3 Excel工作表給定的區(qū)域呈現(xiàn)的模糊查詢結(jié)果數(shù)據(jù)
(三)通過該關(guān)鍵字?jǐn)?shù)據(jù)驗證單元格選定一個精確的姓名。如下圖所示
圖4 精確查詢關(guān)鍵字的選定(非輸入)
(四)又再次點擊按鈕,將在結(jié)果區(qū)域出現(xiàn)出現(xiàn)精確查詢的結(jié)果數(shù)據(jù)。如下圖所示
圖5 Excel工作表給定的區(qū)域呈現(xiàn)的精確查詢結(jié)果數(shù)據(jù)
(五)在數(shù)據(jù)驗證單元格中如果未輸入關(guān)鍵字或未選定關(guān)鍵字,則將出現(xiàn)空關(guān)鍵字輸入的錯誤提示。如下圖所示
圖6 未輸入關(guān)鍵字或未選定關(guān)鍵字的情況
(六)在數(shù)據(jù)驗證單元格中如果輸入的關(guān)鍵字不存在,則將出現(xiàn)數(shù)據(jù)記錄未找到的的錯誤提示。如下圖所示
圖7 輸入不存在的關(guān)鍵字查詢的情況
看了上面的操作體驗,接下來我們來看一下在VBA后臺是如何實現(xiàn)的呢?下面,我們將呈現(xiàn)實現(xiàn)的功能代碼,代碼的每一句幾乎我們都用綠色注釋的非常清楚,便于大家學(xué)習(xí)交流。
四、通過SQL進行查詢Excel數(shù)據(jù)結(jié)果輸出到Excel工作表給定區(qū)域的功能代碼截圖
模塊1中功能代碼:
圖8 功能代碼截圖1
圖9 功能代碼截圖2
圖10 功能代碼截圖3
運用SQL進行查詢Excel數(shù)據(jù)結(jié)果輸出到Excel工作表給定區(qū)域的方法我們就給各位分享完畢了,在這里,我們分別用了模糊與精確查找兩種方式實現(xiàn)了SQL查詢Excel數(shù)據(jù)結(jié)果輸出到Excel工作表給定區(qū)域。這種查詢對于有大量Excel數(shù)據(jù)來講有非常的現(xiàn)實的查詢效率意義,大大地簡化了繁瑣的IF結(jié)構(gòu)判斷結(jié)合循環(huán)結(jié)構(gòu)的檢索,所有的條件都簡化到SQL的Where子句中去即可。希望今天的分享能夠為各位的數(shù)據(jù)查詢提供這種更簡潔的方法。
當(dāng)然,有朋友會問:能否將Excel數(shù)據(jù)用SQL查詢結(jié)果輸出到像其他軟件那樣放在窗體上的像表格那樣的控件中呈現(xiàn)呢?放心,我們會放在下一期作品中來解決這個問題,請大家平時留意關(guān)注!
最后,還是老話,非常感謝各位粉絲朋友對我的關(guān)注(頭條號:跟我學(xué)Office高級辦公)、推廣和點評,有了各位的支持,我會帶著各位的鼓勵一如既往地推出更多有實用意義的作品,謝謝!
總結(jié)
以上是生活随笔為你收集整理的sql空字符串判断函数_Excel数据还可这样来查询:用SQL查询输出工作表指定区域更高效!...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 链接和作用域2 - C++快速入门43
- 下一篇: SSIS中字符串转日期格式导入数据库