2013-05-09 111 views
0

目前我正在做一些事情。C#SQL查詢多個LIKE

using (var IDatabaseQuery = Lightningbolt.GetDatabaseManager().CreateQueryObject()) 
     { 
      IDatabaseQuery.SetQuery("SELECT * FROM catalogue_baseitems WHERE name LIKE '%hc2_%' OR name LIKE '%hc3_';"); 
      data = IDatabaseQuery.FetchTable(); 
     } 

這就是我使用,我想用hc2_和hc3_開頭的所有項目,但是,我只得到開始hc2_的項目。在SQL中也包含以hc3_開頭的項目,但在執行查詢時不顯示。我錯了什麼?

回答

3

如果你想開始與hc2_hc3_項目,你需要做出兩個改變:

  1. 在不使用%開始,並且
  2. 因爲它掩蓋爲「任何一個字符」而逃避下劃線

嘗試這樣:

SELECT * FROM catalogue_baseitems WHERE name LIKE 'hc2\_%' OR name LIKE 'hc3\_%' 

注意%hc2_%將匹配任何下面的例子:

  • abchc2X(因爲領導%和下劃線將匹配X
  • hc23(因爲下劃線將匹配3
  • ...等等
2

你想要的結果包含在一開始,你需要使用條款這樣'hc2_%'hc3_%hc2_hc3_

由於您使用的是'%hc2_%',因此您正在獲得hc2_的結果,此操作會返回字符串中任何位置包含hc2_的任何字符串。

查詢更改這個

IDatabaseQuery.SetQuery("SELECT * FROM catalogue_baseitems WHERE name LIKE 'hc2\_%' OR name LIKE 'hc3\_%';"); 

不要忘了underscore(_),這是一個wildcard字符。

1

你缺少第二百分號:'%hc3_%'

+0

謝謝,這表現很好。我做了一些骯髒的快速工作,所以我一定忘記了第二個百分號。 – 2013-05-09 20:41:02