2012-06-20 5 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의 유형은 무엇입니까? is Char, VarChar, nVarChar입니까? – mafue

+0

@mafue it 's nVarChar –

+0

아. 만약 그것이'char'이라면 공백 문제 일지 모르지만 그렇지 않다면 나는 대답이 없습니다, 미안 해요. – mafue

답변

3

나는이 그냥 오타 인 경우 확실하지 않다, 그러나 그것이 끝날 것처럼 보이는 반면, 코드, LIKE '%Program%'로 끝날 수 있도록 내가 만든 그

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

주의해야 현재는 LIKE %Program%입니다.

+0

나는 점검했지만 코드에 오타가 없다. 어쨌든 당신의 충고에 감사하고있다. –

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 문에 대해 사용중인 것을 알고 나면 문제를 찾을 수 있습니다.