篩選SQL字符串字段中部分值的記錄
如果需要篩選SQL字符串字段中部分值,應(yīng)該怎么做呢?下面就教您篩選SQL字符串字段中部分值的記錄的方法,供您參考。
例如有一個(gè)KKBH(卡口編號(hào))字段,這是一個(gè)字典字段(對(duì)應(yīng)另一個(gè)實(shí)體表(卡口表)的編號(hào)字段)。這個(gè)字段的值保存所屬卡口值域{01,02,03}
本來想到的是通過or來實(shí)現(xiàn),這樣需要?jiǎng)討B(tài)生成SQL語句。
后來想到一個(gè)辦法用charindex搜索SQL字符串的辦法。將所有的要查的卡口編號(hào)組成類似'01@02'這樣待查字符串。sql查詢時(shí)通過charindex篩選出在待查SQL字符串里有的KKBH的記錄。
經(jīng)測(cè)試使用or與使用charindex,兩者在MSSQL中執(zhí)行效率差不多。
具體實(shí)現(xiàn):
用戶界面查詢需求:可能搜索N個(gè)卡口的記錄(N的值域{1,所有卡口個(gè)數(shù)})。設(shè)計(jì)這個(gè)UI的形式一共三種:
一、一個(gè)多選listbox。用戶界面運(yùn)行時(shí)將卡口字典表載入listbox信息。
二、兩個(gè)listbox,左邊為待選,右邊為已選,中間加兩個(gè)按鈕添加與刪除。用戶界面運(yùn)行時(shí)將卡都字典表載入左邊的listbox。
三、多個(gè)Checkbox??梢栽诮缑嬖O(shè)計(jì)階段直接做死字典表,即有幾個(gè)卡口就話幾個(gè)checkbox。或者在程序運(yùn)行根據(jù)字典表繪制動(dòng)態(tài)繪制checkbox。
UI的優(yōu)缺點(diǎn)這里不討論,我這里選擇第三種方式的動(dòng)態(tài)繪制。
在查詢階段根據(jù)所選卡口生成待選SQL字符串入:"01@02”
并將此條件傳回后臺(tái)查詢服務(wù)程序
后臺(tái)查詢服務(wù)里只要待查SQL字符串作為參數(shù)傳入查詢的SQL語句中(sql片段): charindex(卡口編號(hào),@待查字符串)。當(dāng)然也可以手動(dòng)生成SQL方式傳入"charindex(卡口編號(hào),'"+待查字符串+"')".
【編輯推薦】
實(shí)現(xiàn)子孫樹查詢的經(jīng)典SQL語句