2012-05-08 3 views
2

나는 1-500 - 11-500 범위의 숫자를 가진 데이터 목록을 가지고 있습니다. 나는 2-500을 제외한 모든 것을 걸러 내기 위해 쿼리를 만들었습니다. 그러나 나는 아직도 1-500, 2-500, 3-500을보고있다. 내 검색어에 어떤 문제가 있는지 잘 모르겠습니다. 쿼리가 너무 복잡하여 망쳐 버릴 수 있습니까?!지정된 것 이상을 반환하는 단순 쿼리

예 검색어 :

SELECT job_no, job_name 
    FROM JC_JOB 
    WHERE job_no like '2-5%' 

실제 쿼리 :

SELECT w.wrkordnbr 
     , rtrim(w.jcjob) + ' ' + s.name 
     , w.centernbr 
     , w.status 
     , w.servsitenbr 
     , w.dept 
     , s.address 
     , s.city 
FROM wrkorder w, servicesite s 
WHERE s.servsitenbr = w.servsitenbr 
AND  status NOT IN(1,2,3,4,5,6) 
AND  s.name LIKE '2-5% 

어떤 아이디어?

미리 감사드립니다.

+1

job_no의 데이터 유형은 무엇입니까? 그냥 내가 이것을 재현 할 수 없는데 궁금하다. (job_no에'nvarchar'를 사용했다.) – pstrjds

+0

@ bird2920 :이 [link] (http://www.sqlfiddle.com/# ! 4/d41d8/502)'sqlfiddle' –

+1

여기에 뭔가 다른 것이 있어야합니다. 변수를 사용하고 있습니까? 아니면 정확히 위와 같이 하드 코딩되어 있습니까? –

답변

0

미안하지만 난 당신을 믿지 않는다. 를 들어,

job_no 
2-500 

데이터가 job_no 112-500가 있다면 : 당신이 설명하는대로 사실 데이터 인 경우, 쿼리는 2-5으로 시작 ....

declare @jobs as table 
(job_no varchar(20)) 

insert into @jobs 
values (
'1-500' 
),('2-500'),('3-500'),('100-500'),('120-500'),('200-500') 


SELECT job_no 
    FROM @jobs 
    WHERE job_no like '2-5%' 

반환 아무것도 반환해야 예를 들어,이 대신 where job_no like '%2-5%' 다음은이 같은 반환하는 것이 나을했다 당신의 Where 절 :

job_no 
2-500 
112-500 
+0

wrkordernbr, rtrim (w.jcjob) + ''+ s.name, w.centernbr, w.status, w.servsitenbr, w.dept, s.address, s.city from wrkorder w, servicesites s를 선택하십시오. s.servsitenbr = w.servsitenbr 및 상태가 (1,2,3,4,5,6) 및 s.name이 '2-5 %' – bird2920

+1

hrmmm .... '2-5와 같은 s.name % '절은 명령문의 나머지 부분과 상관없이 그 청구서에 맞지 않는 것을 제거해야합니다. 당신은 대괄호를 사용하지 않으므로 (this) 또는 (this and this)의 경우 일 수 없습니다. –

+0

그래서 무엇이 잘못되었는지 알아 내려고합니다. 나는 당신이 당신의 OP와 같은 가장 간단한 문장을 사용하도록 시도한 다음 버그를 발견하기 위해 다른 부분을 추가 할 것을 제안합니다. 잘못되었지만 서면으로 볼 수는 없지만 더 이상 문제를 해결하거나 더 많은 정보를 제공 할 때까지는 더 이상 도움이 될 수 없습니다. –

0

SELECT job_no, job_name 
FROM JC_JOB 
WHERE job_no BETWEEN ('2-5') and ('2-6') 

에 대해 내가 시도하지 않은 것은 무엇

+0

그것이 어떻게 작동하는지 보지 못한다면, 당신은 원하는 것을 제외한 모든 것을 얻을 수 있습니다. 이 작업을 수행해야합니다. SELECT job_no, job_name FROM JC_JOB where job_no BETWEEN ('2-5') 및 ('2-6') –

+0

사실, 당신이 옳다고 생각합니다. – Leandro

+0

리안 드로가 가서 대답을 바꾸십시오. 나는 올바른 길을 가고 있다고 생각합니다. 그의 원래 쿼리가 작동해야하는 동안 문제가 해결되어야합니다. –

관련 문제