2013-10-25 1 views
0

그래서 무대를 잃고 O를, 이것은 SQL LIKE Column Value Plus Wildcard DB2 관련되지만 승DB2 (10)는 SQL LIKE 열 값 플러스 와일드 카드 DB2는/1

그래서, 내가 원하는/OS의 c를 B보다 구체적인 질문 to :

select a.columnA 
     b.columnZ 
from a 
join table b 
    on b.columnB LIKE a.columnA || '%' 

b.columnB는 인덱스이고 조인을 (B/C는 방대한 테이블이므로) 사용하고 싶습니다. 그러나 슬프게도 z/OS에서는 LIKE의 오른쪽에있는 열을 사용할 수 없습니다.

다른 게시물에서 LOCATE를 사용할 수 있지만 스칼라 함수이므로 1 단계 조건 자로 적합하지 않으므로 인덱스 값이 손실됩니다.

+0

그리고 귀하의 질문은 무엇입니까? – mustaccio

+0

B의 모든 행을 원할 때 columnB는 columnA의 SUBSTR입니다 (왼쪽부터). AA, AB, ABCDEFG, AZZZZ 등과 A가 일치하면 올바른가? 그래서 각 b 열에 많은 행이있을 수 있습니까? – Turophile

답변

0

하나의 옵션은 범위 조건자를 사용하고 범위의 상한값에 대해 열 값의 끝으로 높은 값을 연결하는 것입니다. 이 같은 조건에 해당 :

select a.columnA 
     b.columnZ 
from a 
join table b 
    on b.columnB >= a.columnA 
and b.columnB < a.columnA || x'FF' 

이 내가 이런 부분 값 일치에 인덱스를 사용할 수 있도록 특별히 일하는 곳 우리가 자주 사용하는 무언가이다.