專利名稱:數(shù)據(jù)過(guò)濾中的Anti使用和模擬的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)過(guò)濾,尤其涉及數(shù)據(jù)過(guò)濾中的AntiNull使用和模擬。
背景技術(shù):
背景和相關(guān)領(lǐng)域計(jì)算機(jī)和計(jì)算系統(tǒng)已經(jīng)影響了現(xiàn)代生活的幾乎每個(gè)方面。計(jì)算機(jī)一般在工作、休閑、保健、運(yùn)輸、娛樂(lè)、家庭管理等等中使用。在數(shù)據(jù)應(yīng)用中,沒(méi)有一種簡(jiǎn)單的通用方式用于數(shù)據(jù)的有效參數(shù)化選擇,其中有時(shí)選擇數(shù)據(jù)的子集,而其他時(shí)候選擇所有數(shù)據(jù)。例如,考慮以下SQL查詢SELECT Customer. Id, Customer. Name, Customer. AgeFROM CustomerWHERE Customer. Name IN(OCustomerNames)一旦參數(shù)值已經(jīng)被傳入到該查詢,該查詢可變成等同于以下查詢SELECT Customer. Id, Customer. Name, Customer. AgeFROM CustomerWHERE Customer. Name IN( ‘Maria,,‘Abdul,,‘John,)但在數(shù)據(jù)的消費(fèi)者想要實(shí)際查看所有客戶(Customer)的情況下,如果存在大量的客戶,該方法會(huì)變得不實(shí)用和緩慢。用于檢索所有客戶的更有效的方式可以是完全忽略過(guò)濾條件SELECT Customer. Id, Customer. Name, Customer. AgeFROM Customer不幸的是,這將導(dǎo)致查詢的結(jié)構(gòu)基于參數(shù)值而變化,這通常不是數(shù)據(jù)應(yīng)用中的選擇。所需要的是一種傳入?yún)?shù)值的方法,該參數(shù)值本身指示過(guò)濾條件應(yīng)該被忽略。存在在各種數(shù)據(jù)應(yīng)用中使用的針對(duì)該問(wèn)題的三種典型方案。第一種方案是通配符。對(duì)于文本數(shù)據(jù),許多數(shù)據(jù)應(yīng)用提供過(guò)濾條件包括通配符以供模式匹配的能力。例如,用于尋找其姓名以“C”開(kāi)頭的所有客戶的SQL查詢可以是SELECT Customer. Id, Customer. Name, Customer. AgeFROM CustomerWHERE Customer. Name Like 'C%'
參數(shù)化后,該查詢看起來(lái)像SELECT Customer. Id, Customer. Name, Customer. AgeFROM CustomerWHERE Customer. Name LikeiCustomerName這可允許用戶傳入“ %,,作為參數(shù)值,其將匹配每個(gè)客戶姓名。不幸的是,該方式僅對(duì)文本數(shù)據(jù)有效,并且通常不允許對(duì)多個(gè)特定項(xiàng)(例如,來(lái)自以上示例的Mari^Abdul和John)的選擇。第二種方案是自定義代碼。在大多數(shù)情況下,數(shù)據(jù)應(yīng)用使用特定的用手編寫代碼的方案來(lái)為每個(gè)查詢獲得該結(jié)果。這通常采用在查詢的經(jīng)過(guò)濾的和未經(jīng)過(guò)濾的形式之間切換的自定義代碼的形式。在SQL數(shù)據(jù)庫(kù)的情況下,該邏輯通常被構(gòu)建入用于數(shù)據(jù)檢索的經(jīng)存儲(chǔ)的過(guò)程中,過(guò)載“空(null),,的含義來(lái)指示查詢應(yīng)該是未經(jīng)過(guò)濾的。例如IF(OCustID is null)SELECT Customer. CustomerIDFROM Sales. Customer CustomerELSESELECT Customer. CustomerIDFROM Sales. Customer CustomerWHERE Customer. CustomerID = OCustID第三種方案是在維度數(shù)據(jù)庫(kù)中的[All]([所有])成員。在維度數(shù)據(jù)庫(kù)中存在相關(guān)的概念[All]成員。然而,分層結(jié)構(gòu)的該值表示該分層結(jié)構(gòu)的所有成員的聚集,而非單獨(dú)地對(duì)該分層結(jié)構(gòu)的所有成員的集合的引用。例如,對(duì)于銷售的針對(duì)[All]客戶的查詢可產(chǎn)生單個(gè)總計(jì)數(shù),而非每個(gè)客戶的一個(gè)數(shù)。結(jié)果,如果經(jīng)過(guò)濾的或未經(jīng)過(guò)濾的數(shù)值二者之一基于參數(shù)值可以是合乎需要的,那么依然使用如上討論的類似的技術(shù)。在此聲明的主題并不旨在限制解決任何不利之處或僅在諸如以上描述的環(huán)境中操作的實(shí)施例。相反,提供本背景僅僅用于示出在此描述的某些實(shí)施例可以在其中實(shí)現(xiàn)的一種示例性技術(shù)領(lǐng)域。
發(fā)明內(nèi)容
—種實(shí)施例包括用于比較數(shù)據(jù)項(xiàng)的方法。該方法包括訪問(wèn)查詢或命令來(lái)檢索數(shù)據(jù)。查詢或命令包括數(shù)據(jù)項(xiàng)的標(biāo)識(shí)、邏輯運(yùn)算符和專用令牌。執(zhí)行在數(shù)據(jù)項(xiàng)和專用令牌之間的由邏輯運(yùn)算符定義的比較。以下示出邏輯運(yùn)算對(duì)任何數(shù)據(jù)項(xiàng)和專用令牌的結(jié)果相等邏輯運(yùn)算產(chǎn)生真,大于邏輯運(yùn)算產(chǎn)生真;小于邏輯運(yùn)算產(chǎn)生真;大于等于邏輯運(yùn)算產(chǎn)生真; 小于等于邏輯運(yùn)算產(chǎn)生真;不等于邏輯運(yùn)算產(chǎn)生假;IN(在內(nèi))邏輯運(yùn)算產(chǎn)生真;以及NOT IN(不在內(nèi))邏輯運(yùn)算產(chǎn)生假。作為比較的結(jié)果,可檢索數(shù)據(jù)項(xiàng)。其他實(shí)施例可包括包含用于以以下描述的方式來(lái)對(duì)專用令牌進(jìn)行操作的模塊的系統(tǒng)。提供本發(fā)明內(nèi)容以便以簡(jiǎn)化形式介紹將在以下詳細(xì)描述中進(jìn)一步描述的一些概念。該發(fā)明內(nèi)容不旨在標(biāo)識(shí)所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不旨在用于幫助確定所要求保護(hù)的主題的范圍。附加特征和優(yōu)點(diǎn)將在以下描述中闡述,并根據(jù)該描述而部分地顯而易見(jiàn),或者可通過(guò)實(shí)踐在此描述的發(fā)明而獲知。通過(guò)在所附權(quán)利要求中特別指出的裝置和組合,將能認(rèn)識(shí)和獲知本發(fā)明的特征和優(yōu)點(diǎn)。本發(fā)明的特征將從以下描述和所附權(quán)利要求而變得更顯而易見(jiàn),或者可通過(guò)如之后闡述的對(duì)本發(fā)明的實(shí)踐來(lái)獲悉。
為了描述上述和可獲得的其他優(yōu)點(diǎn)和特征,對(duì)以上簡(jiǎn)要描述的主題的更具體的描述將通過(guò)引用本發(fā)明的在附圖中解說(shuō)的具體實(shí)施例來(lái)呈現(xiàn)。應(yīng)理解,這些附圖僅描繪典型實(shí)施例并且因此不被認(rèn)為限定范圍,各實(shí)施例將用附加的特性和細(xì)節(jié)通過(guò)附圖的使用來(lái)描
述和解釋,其中
圖1示出顯示針對(duì)專用令牌的邏輯運(yùn)算結(jié)果的表格;
圖2示出包括前端用戶界面、界面層,以及后端數(shù)據(jù)應(yīng)用的拓?fù)?br>
圖3A示出圖形用戶界面;
圖:3B示出圖形用戶界面;
圖3C示出圖形用戶界面;
圖3D示出圖形用戶界面;
圖4示出用于查詢構(gòu)造的流程;以及
圖5示出用于比較數(shù)據(jù)項(xiàng)的方法。
具體實(shí)施例方式各實(shí)施例可擴(kuò)展數(shù)據(jù)系統(tǒng)以包括專用令牌,該專用令牌在此示出并描述為 "AntiNull (反空)”。AntiNull令牌具有自定義語(yǔ)義,該自定義語(yǔ)義定義該AntiNull令牌如何與系統(tǒng)中(尤其在比較和計(jì)算中)的其他值進(jìn)行交互。這些語(yǔ)義確保將AntiNull用作數(shù)據(jù)過(guò)濾的參數(shù)值產(chǎn)生未經(jīng)過(guò)濾的數(shù)據(jù)。此外,各實(shí)施例可包括聲明性配置用于與不本地地支持AntiNull令牌的系統(tǒng)的互操作性。AntiNull是表示該AntiNull在其中使用的域中的所有可能的值的專用令牌。盡管不正好是空的對(duì)立面(其表示未知值或域外部的值),AntiNull具有對(duì)空行為進(jìn)行補(bǔ)充的許多特性。以下示出AntiNull在過(guò)濾條件中的行為。對(duì)于表現(xiàn)為過(guò)濾條件中的“不要應(yīng)用該過(guò)濾”指示符的AntiNull,存在用于指示其如何與系統(tǒng)中的(尤其是比較運(yùn)算符)中的其他值交互的特定語(yǔ)義?,F(xiàn)在參考圖1,示出具有邏輯比較運(yùn)算符的表格100。表格100總結(jié)了當(dāng)AntiNull是運(yùn)算對(duì)象之一時(shí),從每個(gè)通用布爾邏輯運(yùn)算符返回的值。在102,表格100示出任何運(yùn)算對(duì)象和AntiNull之間的相等比較返回“真”。在104,表格100示出任何運(yùn)算對(duì)象和AntiNull之間的大于比較返回“真”。在106,表格100示出任何運(yùn)算對(duì)象和AntiNull 之間的小于比較返回“真”。在108,表格100示出任何運(yùn)算對(duì)象和AntiNull之間的大于等于比較返回“真”。在110,表格100示出任何運(yùn)算對(duì)象和AntiNull之間的小于等于比較返回“真”。在112,表格100示出任何運(yùn)算對(duì)象和AntiNull之間的不等于比較返回“假”。在 114,表格100示出任何運(yùn)算對(duì)象和AntiNull之間的IN比較返回“真”。IN運(yùn)算符將一個(gè)項(xiàng)與一組項(xiàng)進(jìn)行比較。如果該項(xiàng)與該組項(xiàng)中的任一成員相等,則IN運(yùn)算符返回“真”,否則其返回“假”。在116,表格100示出任何運(yùn)算對(duì)象和AntiNull之間的NOT IN比較返回“假”。不像空,其通過(guò)值“Unknown (未知)”來(lái)使用三態(tài)布爾邏輯,AntiNull不引入附加真狀態(tài)。以下示出AntiNull的使用的示例。以下每個(gè)查詢將返回所有客戶SELECT Customer. Id, Customer. Name, Customer. Age
FROM CustomerWHERE Customer. Name = AntiNullSELECT Customer. Id, Customer. Name, Customer. AgeFROM CustomerWHERE Customer. Age IN(AntiNull)以下每個(gè)查詢將不返回客戶SELECT Customer. Id, Customer. Name, Customer. AgeFROM CustomerWHERE Customer. AgeOAntiNullSELECT Customer. Id, Customer. Name, Customer. AgeFROM CustomerWHERE Customer. Name NOT IN(AntiNull)以下示出AntiNull在計(jì)算中的行為。在第一組說(shuō)明中,以下示出用于數(shù)學(xué)和串運(yùn)算符的包括AntiNull的操作的行為。 由于AntiNull不是數(shù)據(jù)值而是域中的所有的值的標(biāo)記,對(duì)AntiNull使用數(shù)學(xué)運(yùn)算符產(chǎn)生由AntiNull表示的域中的所有的值。以下每個(gè)表達(dá)式將返回AntiNull Customer. Age+AntiNullAntiNull/10Customer. Name| |AntiNullLeft (AntiNull,3)以下查詢返回指定重量的產(chǎn)品(以千克為單位),其中數(shù)據(jù)庫(kù)包括以克為單位的
重量SELECT Product. Id, Product. NameFROM ProductWHERE Product. Weight = @Kilograms*1000當(dāng)AntiNull被傳入作為對(duì)該查詢的OKilograms 千克)參數(shù)的值時(shí), (AntiNull^lOOO)的計(jì)算產(chǎn)生AntiNull,其接著與ftx)duct. Weight (產(chǎn)品.重量)進(jìn)行比較。這將評(píng)估為真,使得顯示所有產(chǎn)品。在第二組計(jì)算中的AntiNull行為的說(shuō)明中,以下示出用于聚集函數(shù)的包括 AntiNull的操作的行為。對(duì)AntiNull執(zhí)行聚集函數(shù)返回AntiNull。例如,這些表達(dá)式中的每個(gè)表達(dá)式都將返回AntiNull Sum (AntiNull)Count(AntiNull)Max(AntiNul1+6)Variance(Customer. Age/10)以下示出用于其他運(yùn)算符和函數(shù)的包括AntiNull的操作的行為。盡管通常,所有將AntiNull采用為自變量的運(yùn)算符和函數(shù)應(yīng)該返回AntiNull,但是存在例外。具體而言,合并隱含比較的函數(shù)考慮以上的比較運(yùn)算符規(guī)則。例如,考慮基于比較有條件地返回兩 fit 中的— Sw it ch IfSame (Fir stValueToCompare, SecondValueToCompare,
7ResultValueIfSame, ResultValueIfDifferent)。在該情況下,函數(shù)中的條件邏輯可指示如果自變量中的一個(gè)是AntiNull,SwitchIfSame不應(yīng)該總是返回AntiNull。相反,函數(shù)的邏輯將明確地考慮AntiNull比較語(yǔ)義。在該示例中,SwitchIfSame (ValueLAntiNull, <RetVall>,RetVal2)將和 SwitchIfSame (Valuel,Valuel,RetVal 1,RetVal2) —樣地表現(xiàn)。以下示出用戶界面AntiNull值配置?,F(xiàn)有的用于數(shù)據(jù)存儲(chǔ)的前端用戶界面 202(參見(jiàn)圖2),諸如數(shù)據(jù)應(yīng)用206,可能沒(méi)有本地地包括AntiNull的概念。當(dāng)這樣的前端用戶界面202在不支持AntiNull的后端數(shù)據(jù)應(yīng)用206上使用時(shí),可使用簡(jiǎn)單的界面層204 來(lái)向用戶展示這個(gè)。對(duì)該界面層204存在兩個(gè)部分。首先,值的普通域外部的標(biāo)準(zhǔn)值被定義來(lái)表示AntiNull。其次,該值可被任選地綁定到表示未經(jīng)過(guò)濾的數(shù)據(jù)的現(xiàn)有的用戶界面元素。例如,簡(jiǎn)單的參數(shù)值選擇用戶界面可能像圖3A中顯示的用戶界面300-1那樣出現(xiàn)。通過(guò)配置標(biāo)準(zhǔn)值“All Categories (所有類別)”來(lái)表示該參數(shù)的AntiNull,用戶界面300-2可如圖;3B示出的那樣出現(xiàn)。在這種情況下,前端用戶界面202不知道將被后端數(shù)據(jù)應(yīng)用206使用的“所有類別”的特定語(yǔ)義。然而,如果前端用戶界面202具有“show everything(顯示所有)”的標(biāo)準(zhǔn)質(zhì)樸 (naiVe)實(shí)現(xiàn)(其簡(jiǎn)單地枚舉傳送到后端系統(tǒng)的每個(gè)值),用戶界面300-3可如圖3C示出的那樣出現(xiàn)。所插入的“所有類別”被視為正如任何其他值的可能值,使得用戶界面的“ Gelect All)(選擇所有)”選項(xiàng)成為冗余的。在這種情況下,提供額外的配置信息來(lái)將AntiNull令牌值綁定到內(nèi)置用戶界面“顯示所有”行為,產(chǎn)生圖3D中顯示的用戶界面300-4。通過(guò)這種方式來(lái)配置,當(dāng)“(選擇所有)”被選擇時(shí),用戶界面將值“所有類別”傳送到后端數(shù)據(jù)應(yīng)用。 后端將接著將“所有類別”視為AntiNull。以下是該配置信息的一個(gè)示例表示〈ReportP arameter Name=“ C ategory "> <DataType>String</DataType> <Prompt>Category</Prompt> <ValidValues>
<DataSetReference>
<DataSetName>Categories</DataSetName> <ValueField>Name</ValueField> <LabelField>Name</LabelField> </DataSetReference> <AntiNull>
<Value>ALL</Value> <!-- Specifies the value to use as AntiNull
—>
<Label>All Categories</Label> <!- Label unused if bound to
Select All -->
</AntiNull> </ValidValues>
<MultiValue>true</MultiValue> <SelectAllMode>AntiNull</SelectAllMode>
<!-- AntiNuIl = Select All passes the AntiNull value --> <!-- Collection = Select All passes the full set of all values --> <!-- None = No Select All option to be provided to the user --> 〈/ReportP arameter〉以下討論現(xiàn)在關(guān)注查詢界面AntiNull值配置和行為。現(xiàn)有的數(shù)據(jù)應(yīng)用沒(méi)有本地地包括AntiNull的概念。當(dāng)這樣的數(shù)據(jù)應(yīng)用206被用作對(duì)不支持AntiNull的系統(tǒng)的后端數(shù)據(jù)提供者時(shí),界面層204可被用于重寫查詢。具體而言,圖1中示出的每個(gè)規(guī)則和以上描述的計(jì)算中的AntiNull的行為可被實(shí)現(xiàn)為通用查詢重寫規(guī)則。例如,基于相等運(yùn)算符的規(guī)則,該查詢SELECT Customer. Id, Customer. Name, Customer. AgeFROM CustomerWHERE Customer. Name = AntiNull可以被重寫為這個(gè)查詢SELECT Customer. Id, Customer. Name, Customer. Age
FROM CustomerWHERE True由此,包括AntiNull的查詢可以被重寫為在不支持AntiNull的底層數(shù)據(jù)應(yīng)用206 上使用的查詢。盡管用于重寫的特定語(yǔ)法取決于過(guò)濾和計(jì)算語(yǔ)言的語(yǔ)法(例如,在以上示例中,大多數(shù)SQL語(yǔ)言將使用“1 = 1”而非“真(true)”),重寫規(guī)則的語(yǔ)義可跨后端數(shù)據(jù)應(yīng)用206 —致?,F(xiàn)在參考圖4,示出了查詢重寫流程圖,該流程圖顯示可在某些實(shí)施例中使用的用于重寫查詢的算法。注意的是,對(duì)于某些數(shù)據(jù)應(yīng)用,可基于參數(shù)值來(lái)自動(dòng)地應(yīng)用過(guò)濾并由此不在查詢中顯式地出現(xiàn)。例如,將“Joe”作為參數(shù)[CustName]的值傳送給該查詢將產(chǎn)生名字為Joe 的客戶列表。SELECT Customer. Id, Customer. Name, Customer. AgeFROM Customer對(duì)于這樣的數(shù)據(jù)應(yīng)用206的界面層204可不需要重寫查詢來(lái)模擬AntiNull的行為。相反,如果參數(shù)的值是AntiNull,其可簡(jiǎn)單地不向數(shù)據(jù)應(yīng)用提供該值。以下討論現(xiàn)在參考可被執(zhí)行的多個(gè)方法和方法動(dòng)作。雖然方法動(dòng)作以某個(gè)次序討論或在流程圖中示為以特定次序發(fā)生,但是除非特定指出,并不要求特定的次序,因?yàn)橐粍?dòng)作是依賴于另一在該動(dòng)作被執(zhí)行之前完成的動(dòng)作?,F(xiàn)在參考圖5,示出了方法500。方法500可以在計(jì)算環(huán)境中實(shí)現(xiàn)并包括用于比較數(shù)據(jù)項(xiàng)的動(dòng)作。該方法包括訪問(wèn)查詢或命令來(lái)檢索數(shù)據(jù)(動(dòng)作50 。查詢或命令包括數(shù)據(jù)項(xiàng)的標(biāo)識(shí)、邏輯運(yùn)算符和專用令牌。例如,數(shù)據(jù)項(xiàng)的標(biāo)識(shí)可以通過(guò)項(xiàng)在數(shù)據(jù)存儲(chǔ)中的標(biāo)識(shí)或通過(guò)簡(jiǎn)單地標(biāo)識(shí)某些值。專用令牌可以是包括以上描述的AntiNull的特征的令牌。邏輯運(yùn)算符可以是圖1顯示的運(yùn)算符中的一個(gè)。方法500進(jìn)一步包括在數(shù)據(jù)項(xiàng)和專用令牌之間執(zhí)行由邏輯運(yùn)算符定義的比較(動(dòng)作504)。邏輯運(yùn)算符比較和結(jié)果如圖1中顯示的那樣。尤其,對(duì)于任何項(xiàng)相比于專用令牌的相等邏輯運(yùn)算是真;對(duì)于任何項(xiàng)相比于專用令牌的大于邏輯運(yùn)算是真;對(duì)于任何項(xiàng)相比于專用令牌的小于邏輯運(yùn)算是真;對(duì)于任何項(xiàng)相比于專用令牌的大于等于邏輯運(yùn)算是真; 對(duì)于任何項(xiàng)相比于專用令牌的小于等于邏輯運(yùn)算是真;對(duì)于任何項(xiàng)相比于專用令牌的不等于邏輯運(yùn)算是假;對(duì)于任何一組項(xiàng)相比于專用令牌的IN邏輯運(yùn)算是真;以及對(duì)于任何一組項(xiàng)相比于專用令牌的NOT IN邏輯運(yùn)算是假。作為比較的結(jié)果,方法500包括檢索或不檢索數(shù)據(jù)項(xiàng)(動(dòng)作506)。尤其,邏輯結(jié)果可使得數(shù)據(jù)項(xiàng)被檢索。或者,邏輯結(jié)果可以使得數(shù)據(jù)項(xiàng)不被檢索。方法500可被實(shí)現(xiàn)為其中查詢或命令進(jìn)一步包括對(duì)專用令牌和一個(gè)或多個(gè)其他數(shù)據(jù)值進(jìn)行操作的數(shù)學(xué)運(yùn)算符。數(shù)學(xué)運(yùn)算符對(duì)專用令牌和一個(gè)或多個(gè)其他數(shù)據(jù)值進(jìn)行操作的結(jié)果是專用令牌。方法500可被實(shí)現(xiàn)為其中查詢或命令進(jìn)一步包括對(duì)專用令牌和一個(gè)或多個(gè)其他數(shù)據(jù)值進(jìn)行操作的串運(yùn)算符。串運(yùn)算符對(duì)專用令牌和一個(gè)或多個(gè)其他數(shù)據(jù)值進(jìn)行操作的結(jié)果是專用令牌。方法500可以被實(shí)現(xiàn)為其中查詢或命令進(jìn)一步包括對(duì)專用令牌操作的聚集函數(shù)。 聚集函數(shù)對(duì)專用令牌進(jìn)行操作的結(jié)果是專用令牌。
10
方法500可被實(shí)現(xiàn)為其中作為比較的結(jié)果來(lái)檢索數(shù)據(jù)項(xiàng)包括創(chuàng)建適應(yīng)底層數(shù)據(jù)存儲(chǔ)的查詢。具體而言,底層數(shù)據(jù)存儲(chǔ)可能不支持專用令牌。然而,所創(chuàng)建的查詢語(yǔ)義上等同于包括專用令牌的查詢。這可例如通過(guò)遵循圖4中示出的過(guò)程來(lái)實(shí)現(xiàn)。方法500可進(jìn)一步包括在用戶界面中配置要由專用令牌表示的標(biāo)準(zhǔn)值。例如,如在圖:3B中顯示的,“所有類別”選擇可以是可由專用令牌表示的標(biāo)準(zhǔn)值。方法500可進(jìn)一步包括接收對(duì)數(shù)據(jù)項(xiàng)的所有類別的選項(xiàng)表示進(jìn)行選擇的用戶輸入,并將該選擇轉(zhuǎn)換為專用令牌。例如,如在圖3C中顯示的,“(選擇所有)”選擇可以與專用令牌相關(guān)聯(lián)。方法500可進(jìn)一步包括將從一組用戶界面選項(xiàng)中選擇所有用戶界面選項(xiàng)的用戶界面選項(xiàng)綁定到專用令牌。此外,方法可由包括一個(gè)或多個(gè)處理器和諸如計(jì)算機(jī)存儲(chǔ)器之類的計(jì)算機(jī)可讀介質(zhì)的計(jì)算機(jī)系統(tǒng)來(lái)實(shí)現(xiàn)。尤其,計(jì)算機(jī)存儲(chǔ)器可存儲(chǔ)計(jì)算機(jī)可執(zhí)行指令,當(dāng)由一個(gè)或多個(gè)處理器執(zhí)行時(shí),該計(jì)算機(jī)可執(zhí)行指令導(dǎo)致執(zhí)行各種功能,諸如在各實(shí)施例中描述的動(dòng)作。本發(fā)明的各實(shí)施例可包括或利用包括計(jì)算機(jī)硬件和軟件的專用或通用計(jì)算機(jī),如在下詳細(xì)討論的。本發(fā)明的范圍內(nèi)的各實(shí)施例也可包括物理和其他計(jì)算機(jī)可讀介質(zhì)來(lái)運(yùn)送或存儲(chǔ)計(jì)算機(jī)可執(zhí)行指令和/或數(shù)據(jù)結(jié)構(gòu)。這樣的計(jì)算機(jī)可讀介質(zhì)可以是可由通用或?qū)S糜?jì)算機(jī)系統(tǒng)訪問(wèn)的任何可用介質(zhì)。存儲(chǔ)計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì)是物理存儲(chǔ)介質(zhì)。運(yùn)送計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì)是傳輸介質(zhì)。由此,作為示例而非限制,本發(fā)明的各實(shí)施例可包括至少兩個(gè)不同種類的計(jì)算機(jī)可讀介質(zhì)物理計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)和傳輸計(jì)算機(jī)可讀介質(zhì)。物理計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)包括RAM、ROM、EEPROM、CD-ROM或其他光盤存儲(chǔ)(諸如 CD、DVD等等)、磁盤存儲(chǔ)或其他磁性存儲(chǔ)設(shè)備、或可被用于存儲(chǔ)具有計(jì)算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)形式的期望的程序代碼裝置并可由通用或?qū)S糜?jì)算機(jī)訪問(wèn)的任何其他介質(zhì)?!熬W(wǎng)絡(luò)”被定義為使得能夠在計(jì)算機(jī)系統(tǒng)和/或模塊和/或其他電子設(shè)備之間傳輸電子數(shù)據(jù)的一個(gè)或多個(gè)數(shù)據(jù)鏈接。當(dāng)信息通過(guò)網(wǎng)絡(luò)或另一通信連接(硬連接、無(wú)線、或硬連接或無(wú)線的組合中的任一)被傳輸?shù)接?jì)算機(jī)時(shí),計(jì)算機(jī)適當(dāng)?shù)貙⑦B接視為傳輸介質(zhì)。傳輸介質(zhì)可包括可用于傳送具有計(jì)算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)形式的期望的程序代碼裝置并可由通用或?qū)S糜?jì)算機(jī)訪問(wèn)的網(wǎng)絡(luò)和/或數(shù)據(jù)鏈接。上述的組合也被包括在計(jì)算機(jī)可讀介質(zhì)的范圍內(nèi)。此外,一旦到達(dá)各種計(jì)算機(jī)系統(tǒng)組件,具有計(jì)算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)形式的程序代碼裝置可被自動(dòng)地從傳輸計(jì)算機(jī)可讀介質(zhì)傳輸?shù)轿锢碛?jì)算機(jī)可讀存儲(chǔ)介質(zhì)(或反之亦然)。例如,通過(guò)網(wǎng)絡(luò)或數(shù)據(jù)鏈接接收到的計(jì)算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)能被緩沖在網(wǎng)絡(luò)接口模塊(例如,“NIC”)的RAM中,并接著最終傳輸?shù)接?jì)算機(jī)系統(tǒng)RAM和/或計(jì)算機(jī)系統(tǒng)處較不易失性的計(jì)算機(jī)可讀物理存儲(chǔ)介質(zhì)。由此,計(jì)算機(jī)可讀物理存儲(chǔ)介質(zhì)可被包括在也(或甚至主要地)利用傳輸介質(zhì)的計(jì)算機(jī)系統(tǒng)組件。計(jì)算機(jī)可執(zhí)行指令包括例如使得通用計(jì)算機(jī)、專用計(jì)算機(jī)、或?qū)S锰幚碓O(shè)備執(zhí)行某個(gè)功能或一組功能的指令和數(shù)據(jù)。計(jì)算機(jī)可執(zhí)行指令可以例如是二進(jìn)制代碼、諸如匯編語(yǔ)言之類的中間格式指令、或甚至是源代碼。盡管用結(jié)構(gòu)特征和/或方法動(dòng)作專用的語(yǔ)言描述了本主題,但可以理解,所附權(quán)利要求書中定義的主題不必限于上述具體特征或動(dòng)作。相反,所描述的特征和動(dòng)作是作為實(shí)現(xiàn)權(quán)利要求的示例形式揭示的。本領(lǐng)域的技術(shù)人員將理解,本發(fā)明可在具有多種類型的計(jì)算機(jī)系統(tǒng)配置的網(wǎng)絡(luò)計(jì)算環(huán)境中實(shí)現(xiàn),包括個(gè)人計(jì)算機(jī)、桌面計(jì)算機(jī)、膝上型計(jì)算機(jī)、消息處理器、手持式設(shè)備、多處理器系統(tǒng)、基于微處理器或可編程消費(fèi)者電器、網(wǎng)絡(luò)PC、迷你計(jì)算機(jī)、大型計(jì)算機(jī)、移動(dòng)電話、PDA、呼叫機(jī)、路由器、交換機(jī)等等。本發(fā)明還可在分布式系統(tǒng)環(huán)境中實(shí)現(xiàn),其中通過(guò)網(wǎng)絡(luò)鏈接(通過(guò)硬鏈接數(shù)據(jù)鏈接、無(wú)線數(shù)據(jù)鏈接、或通過(guò)硬鏈接和無(wú)線數(shù)據(jù)鏈接的組合中的任一一種)的本地和遠(yuǎn)程計(jì)算機(jī)系統(tǒng)兩者均執(zhí)行任務(wù)。在分布式系統(tǒng)環(huán)境中,程序模塊可位于本地和遠(yuǎn)程存儲(chǔ)器存儲(chǔ)設(shè)備兩者中。本發(fā)明也可以其他具體形式體現(xiàn)而不背離其精神實(shí)質(zhì)或特性。所描述的諸實(shí)施例在各方面將僅被視為說(shuō)明性的而不是限制性的。本發(fā)明的范圍因此由所附的權(quán)利要求而不是由該以上描述來(lái)指示。落入權(quán)利要求的等價(jià)物的含義和范圍的所有改變都包含在權(quán)利要求的范圍內(nèi)。
權(quán)利要求
1.一種在包括一個(gè)或多個(gè)處理器的計(jì)算環(huán)境中用于比較數(shù)據(jù)項(xiàng)的方法,所述方法包括所述一個(gè)或多個(gè)處理器中的執(zhí)行以下動(dòng)作的一個(gè)或多個(gè)訪問(wèn)查詢或命令來(lái)檢索數(shù)據(jù),所述查詢或命令包括數(shù)據(jù)項(xiàng)的標(biāo)識(shí)、邏輯運(yùn)算符和專用令牌(502);在所述數(shù)據(jù)項(xiàng)和所述專用令牌之間執(zhí)行由所述邏輯運(yùn)算符定義的比較(504),其中所述邏輯運(yùn)算符比較和結(jié)果如下對(duì)于針對(duì)任何數(shù)據(jù)項(xiàng)相比于專用令牌的相等邏輯運(yùn)算(10 是真; 對(duì)于針對(duì)任何項(xiàng)相比于專用令牌的大于邏輯運(yùn)算(104)是真; 對(duì)于針對(duì)任何項(xiàng)相比于專用令牌的小于邏輯運(yùn)算(106)是真; 對(duì)于針對(duì)任何項(xiàng)相比于專用令牌的大于等于邏輯運(yùn)算(108)是真; 對(duì)于針對(duì)任何項(xiàng)相比于專用令牌的小于等于邏輯運(yùn)算(110)是真; 對(duì)于針對(duì)任何項(xiàng)相比于專用令牌的不等于邏輯運(yùn)算(112)是假; 對(duì)于針對(duì)任何一組項(xiàng)相比于專用令牌的IN邏輯運(yùn)算(114)是真;以及對(duì)于針對(duì)任何一組項(xiàng)相比于專用令牌的NOT IN邏輯運(yùn)算(116)是假;以及作為比較的結(jié)果,檢索或不檢索數(shù)據(jù)項(xiàng)(506)。
2.如權(quán)利要求1所述的方法,其特征在于,作為比較的結(jié)果來(lái)檢索數(shù)據(jù)項(xiàng)包括創(chuàng)建適應(yīng)底層數(shù)據(jù)存儲(chǔ)的查詢,其中所述底層數(shù)據(jù)存儲(chǔ)不支持所述專用令牌,但是其中所創(chuàng)建的查詢?cè)谡Z(yǔ)義上等同于包括所述專用令牌的查詢。
3.如權(quán)利要求1所述的方法,其特征在于,進(jìn)一步包括接收對(duì)表示數(shù)據(jù)項(xiàng)的所有類別的選項(xiàng)進(jìn)行選擇的用戶輸入,并將該選擇轉(zhuǎn)換為專用令牌。
4.權(quán)利要求1所述的方法,其特征在于,所述查詢或命令進(jìn)一步包括對(duì)專用令牌和一個(gè)或多個(gè)其他數(shù)據(jù)值進(jìn)行操作的數(shù)學(xué)運(yùn)算符,并且其中數(shù)學(xué)運(yùn)算符對(duì)專用令牌和一個(gè)或多個(gè)其他數(shù)據(jù)值進(jìn)行操作的結(jié)果是專用令牌。
5.如權(quán)利要求1所述的方法,其特征在于,所述查詢或命令進(jìn)一步包括對(duì)專用令牌和一個(gè)或多個(gè)其他數(shù)據(jù)值進(jìn)行操作的串運(yùn)算符,并且其中串運(yùn)算符對(duì)專用令牌和一個(gè)或多個(gè)其他數(shù)據(jù)值進(jìn)行操作的結(jié)果是專用令牌。
6.如權(quán)利要求1所述的方法,其特征在于,所述查詢或命令進(jìn)一步包括對(duì)專用令牌進(jìn)行操作的聚集函數(shù),并且其中聚集函數(shù)對(duì)專用令牌進(jìn)行操作的結(jié)果是專用令牌。
7.如權(quán)利要求1所述的方法,其特征在于,進(jìn)一步包括在用戶界面中配置要由專用令牌表示的標(biāo)準(zhǔn)值。
8.如權(quán)利要求1所述的方法,其特征在于,進(jìn)一步包括將從一組用戶界面選項(xiàng)中選擇所有用戶界面選項(xiàng)的用戶界面選項(xiàng)綁定到專用令牌。
9.一種在計(jì)算環(huán)境中用于比較數(shù)據(jù)項(xiàng)的系統(tǒng),所述系統(tǒng)包括 存儲(chǔ)數(shù)據(jù)項(xiàng)的數(shù)據(jù)存儲(chǔ)006);耦合到所述數(shù)據(jù)存儲(chǔ)的用戶界面002),其中所述用戶界面包括允許用戶選擇數(shù)據(jù)項(xiàng)的類別以用于從數(shù)據(jù)存儲(chǔ)檢索的功能;由執(zhí)行存儲(chǔ)在一個(gè)或多個(gè)物理計(jì)算機(jī)可讀介質(zhì)上的計(jì)算機(jī)可讀指令的一個(gè)或多個(gè)處理器實(shí)現(xiàn)的模塊004),其中所述模塊被配置為在數(shù)據(jù)項(xiàng)和專用令牌之間執(zhí)行邏輯運(yùn)算符所定義的比較,其中所述運(yùn)算符比較和結(jié)果如下對(duì)于針對(duì)任何數(shù)據(jù)項(xiàng)相比于專用令牌的相等邏輯運(yùn)算(10 是真; 對(duì)于針對(duì)任何項(xiàng)相比于專用令牌的大于邏輯運(yùn)算(104)是真; 對(duì)于針對(duì)任何項(xiàng)相比于專用令牌的小于邏輯運(yùn)算(106)是真; 對(duì)于針對(duì)任何項(xiàng)相比于專用令牌的大于等于邏輯運(yùn)算(108)是真; 對(duì)于針對(duì)任何項(xiàng)相比于專用令牌的小于等于邏輯運(yùn)算(110)是真; 對(duì)于針對(duì)任何項(xiàng)相比于專用令牌的不等于邏輯運(yùn)算(112)是假; 對(duì)于針對(duì)任何一組項(xiàng)相比于專用令牌的IN邏輯運(yùn)算(114)是真;以及對(duì)于針對(duì)任何一組項(xiàng)相比于專用令牌的NOT IN邏輯運(yùn)算(116)是假;以及被配置為作為比較的結(jié)果,從數(shù)據(jù)存儲(chǔ)中檢索或不檢索數(shù)據(jù)項(xiàng)的模塊(204)。
10.如權(quán)利要求9所述的系統(tǒng),其特征在于,被配置為創(chuàng)建適應(yīng)所述數(shù)據(jù)存儲(chǔ)的查詢的轉(zhuǎn)換模塊,其中所述數(shù)據(jù)存儲(chǔ)不支持專用令牌,但是其中所創(chuàng)建的查詢?cè)谡Z(yǔ)義上等同于包括所述專用令牌的查詢。
11.如權(quán)利要求9所述的系統(tǒng),其特征在于,進(jìn)一步包括被配置為在用戶界面處接收對(duì)表示數(shù)據(jù)項(xiàng)的所有類別的選項(xiàng)進(jìn)行選擇的用戶輸入并將該選擇轉(zhuǎn)換為專用令牌的模塊。
12.如權(quán)利要求9所述的系統(tǒng),其特征在于,進(jìn)一步包括被配置成根據(jù)數(shù)學(xué)運(yùn)算符來(lái)執(zhí)行運(yùn)算的模塊,所述數(shù)學(xué)運(yùn)算符對(duì)專用令牌和一個(gè)或多個(gè)其他數(shù)據(jù)值進(jìn)行操作,并且其中數(shù)學(xué)運(yùn)算符對(duì)專用令牌和一個(gè)或多個(gè)其他數(shù)據(jù)值進(jìn)行操作的結(jié)果是專用令牌。
13.如權(quán)利要求9所述的系統(tǒng),其特征在于,進(jìn)一步包括被配置成根據(jù)串運(yùn)算符來(lái)執(zhí)行運(yùn)算的模塊,所述串運(yùn)算符對(duì)專用令牌和一個(gè)或多個(gè)其他數(shù)據(jù)值進(jìn)行操作,并且其中串運(yùn)算符對(duì)專用令牌和一個(gè)或多個(gè)其他數(shù)據(jù)值進(jìn)行操作的結(jié)果是專用令牌。
14.如權(quán)利要求9所述的系統(tǒng),其特征在于,進(jìn)一步包括被配置成根據(jù)聚集函數(shù)來(lái)執(zhí)行運(yùn)算的模塊,所述聚集函數(shù)針對(duì)專用令牌進(jìn)行操作,并且其中聚集函數(shù)針對(duì)專用令牌進(jìn)行操作的結(jié)果是專用令牌。
15.如權(quán)利要求9所述的系統(tǒng),其特征在于,所述用戶界面被配置成由專用令牌表示的標(biāo)準(zhǔn)值。
全文摘要
描述了數(shù)據(jù)過(guò)濾中的AntiNull使用和模擬。比較數(shù)據(jù)項(xiàng)。該方法包括訪問(wèn)查詢或命令來(lái)檢索數(shù)據(jù)。查詢或命令包括數(shù)據(jù)項(xiàng)的標(biāo)識(shí)、邏輯運(yùn)算符和專用令牌。執(zhí)行數(shù)據(jù)項(xiàng)和專用令牌之間的由邏輯運(yùn)算符定義的比較。以下示出邏輯運(yùn)算對(duì)任何數(shù)據(jù)項(xiàng)和專用令牌的結(jié)果相等邏輯運(yùn)算產(chǎn)生真,大于邏輯運(yùn)算產(chǎn)生假;小于邏輯運(yùn)算產(chǎn)生假;大于等于邏輯運(yùn)算產(chǎn)生真;小于等于邏輯運(yùn)算產(chǎn)生真;不等于邏輯運(yùn)算產(chǎn)生假;IN(在內(nèi))邏輯運(yùn)算產(chǎn)生真;以及NOT IN(不在內(nèi))邏輯運(yùn)算產(chǎn)生假。作為比較的結(jié)果,數(shù)據(jù)項(xiàng)可被檢索。
文檔編號(hào)G06F17/30GK102567450SQ20111035593
公開(kāi)日2012年7月11日 申請(qǐng)日期2011年10月27日 優(yōu)先權(quán)日2010年10月28日
發(fā)明者A·I·米內(nèi)耶夫, A·S·梅耶斯, C·A·海斯 申請(qǐng)人:微軟公司