2011-05-04 2 views
0

like의 결합을 시도하고 Sybase에 조인을 시도했습니다.Sybase SQL에서 like와 left join을 어떻게 결합합니까?

예를 들어 (내 경우에는 다소 복잡 하긴하지만) o도 아니고 i도없는 텍스트를 찾고 있습니다.

나는 즉, 텍스트 중 하나를이 편지의 포함, 반대를 할 수 있어요 : 예상대로

select numbers.name from 
(
     select 'one' name union all 
     select 'two' name union all 
     select 'three' name union all -- neither %o% nor %i% 
     select 'four' name union all 
     select 'five' name union all 
     select 'six' name union all 
     select 'seven' name union all -- neither %o% nor %i% 
     select 'eight' name union all 
     select 'nine' name union all 
     select 'ten' name   -- neither %o% nor %i% 
) numbers, 
(
     select '%o%' expression union all 
     select '%i%' expression  
) patterns 
where 
    numbers.name like patterns.expression 

three, seventen를 제외한 모든 레코드를 선택합니다.

이제이 세 가지 레코드를 찾는 방법을 찾고 있습니다. 나는 왼쪽에 대해 숫자가이고, 패턴이 인 것으로 생각하고 null 인 식을 필터링했습니다. 다음과 같은 것 :

numbers.name *like patterns.expression and 
patterns.expression is null 

분명히 이것은 작동하지 않습니다. 그래서, 나는 올바른 방향으로 주어진 어떤 포인터라도 기뻐할 것입니다. 그것의 가치가 무엇인지에 대한

이 내가 작업하고있는 버전입니다 :

select @@version 
'Adaptive Server Enterprise/15.0.3/EBF 17156 ESD#3/P/Sun_svr4/OS 5.8/ase1503/2726/64-bit/FBO/Fri Feb 5 05:26:23 2010' 

답변

0

당신은 사용해야 NOT EXISTS (이 사건의) :

select numbers.name from 
(
     select 'one' name union all 
     select 'two' name union all 
     select 'three' name union all -- neither %o% nor %i% 
     select 'four' name union all 
     select 'five' name union all 
     select 'six' name union all 
     select 'seven' name union all -- neither %o% nor %i% 
     select 'eight' name union all 
     select 'nine' name union all 
     select 'ten' name   -- neither %o% nor %i% 
) numbers 
where not exists (select null 
        from (
          select '%o%' expression union all 
          select '%i%' expression 
         ) patterns 
        where numbers.name like patterns.expression)