2012-11-27 52 views
0

我想查詢我的數據庫中的一個字段,這與我的軟件中的列表視圖相對應。多重選擇當然是可能的。在本例中,列表視圖中的選項如下所示:「opt1」,「opt2」,「opt3」,「opt4」。這些記錄保存在數據庫中,如下所示:Sql查詢字段與哈希標記拆分字符

對於1名列表視圖選項 「選項1」
對於多個選項: 「選項1#OPT3」 - 或 「OPT3#OPT4」 - 或「選項1#OPT4#OPT3 「 - 等等。你得到了漂移。

  • 我該如何查詢這個,如果我想計算某個選項的所有出現次數?
  • 如果我想要計算1個特定選項的出現次數,我該如何查詢?

如果我們要調用參數,比如@ListViewSelection?

選擇計數...?我堅持,因爲#字符分割的提前

+0

哎喲。歡迎來到美好(可怕)的多值專欄世界。優點包括:不能正確使用索引,需要棘手或其他複雜的查詢,以及糟糕的時間更新列和任何依賴項。請''主軸,摺疊和破壞''獎勵'原設計師,然後規範化(你需要一個'選項'表)。 –

回答

0
select count(*) from tablename where listview like '%Opt1%' 

一定要通過圖案爲綁定參數,以避免注入攻擊

感謝,

select count(*) from tablename where listview like ? 
+0

嗨,謝謝,但它似乎並不那麼簡單。假設我想將Opt1的發生次數統計爲Opt2? (理論上) – wouter

+1

@wouter - 除非支持RDBMS允許像Regex之類的東西,否則只有兩種方法可以做到這一點:1)構建一個(臨時)表/ CTE,並將標記作爲單獨的行,'計數'就好像它是另一個表(有些具有不同的特徵,可能也屬於這個類別)。 2)使用'LIKE'子句搜索_each_選項,必要時使用'AND'或'OR'。 –

+0

謝謝,第一個選擇是我想要的方式..我希望有一個更簡單的方法,雖然;-) – wouter