2012-06-20 42 views
2

我有這些sql語句根據用戶輸入輸出作業字段。SQL Like語句不返回通配符輸出asp.net c#

SELECT jf.name, j.jname, c.cname, cj.url 
    FROM company_has_job cj 
     INNER JOIN job j ON j.id = cj.job_id 
     INNER JOIN company c ON c.id = cj.company_id 
     INNER JOIN jobfield_has_job jhj ON jhj.job_id = j.id 
     INNER JOIN jobfield jf ON jf.id = jhj.jobfield_id 
    WHERE jf.name LIKE '%' + @InputJob + '%' 

例如,當用戶輸入查詢「程序員」,系統將輸出在database.but定義的所有程序員的工作系統沒有顯示任何結果,如果我在搜索中輸入「計劃」框。這是我的控制參數:

<SelectParameters> 
    <asp:ControlParameter ControlID="TextBox4" Name="InputExpertise" 
     PropertyName="Text"/> 
</SelectParameters> 

你能告訴我我做錯了嗎?非常感謝您的幫助。

+0

@InputJob的類型是什麼 - 是Char,VarChar,nVarChar? – mafue

+0

@mafue它的nVarChar –

+0

啊。如果它是'char'這可能是一個空白問題,但如果沒有,那麼我沒有答案,對不起。 – mafue

回答

3

我不知道這是否只是一個錯字,但應該不會是

WHERE jf.name LIKE '''%' + @InputJob + '%''' 

注意,我做到了,這樣的代碼最終會爲LIKE '%Program%',而它看起來像它會結束目前爲LIKE %Program%

+0

我查過了,但是code.thanks裏沒有輸入錯誤。 –

1

還不能評論,但也許這將回答這個問題,做任何你加入的列允許NULL?內部連接不會返回包含null的結果。

考慮這個查詢:

select wb.employee,wb.Dept from web_user wb 
inner join Employee e on wb.Dept = e.Department 
where wb.employee like '%Ted%' 

沒有結果

但這:

select wb.employee,wb.Dept from web_user wb 
left join Employee e on wb.Dept = e.Department 
where wb.employee like '%Ted%' 

返回: 泰德NULL

而且它我是有幫助的調試,設置實際調用數據庫的斷點來獲取它的SQL語句正在使用並粘貼到查詢編輯器中。當查詢不起作用時,我已經完成了很多次。一旦你知道該程序正在使用的SQL語句,也可能幫助你找到問題。