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