2016-07-01 3 views
-2

하나의 테이블에 컬럼 a가 있고 다른 테이블에 컬럼 2가 있다고 가정합니다. 둘 다 navchar입니다. 열 2는 '-US'로 끝납니다. 열 1이 2와 같지만 끝나지 않으면 두 테이블을 어떻게 조인합니까?비슷한 열에 Sql join, 동일하지 않음

+2

'T2.C2 = t1.c1 + '에 -US'' 또한 수도 t1.c1 + '%''와 같은 t2.c2를 추가하여 더 나은/더 빠른 계획을 얻는 지 확인하십시오. – shawnt00

답변

1

당신은 하나

SELECT 
    a.Field1 
    ,a.Field2 
    ,b.Field3 
FROM TableA a 
JOIN TableB b 
    ON a.Fieldname + '-US' = b.FieldName 

을 할 수 또는 항상 - 미국에서 끝나지 않을거야이라면 당신이이

SELECT 
    a.Field1 
    ,a.Field2 
    ,b.Field3 
FROM TableA a 
JOIN TableB b 
    ON b.FieldName LIKE a.FieldName + '%' 
0

분명한 일을 시도 할 수있는 것은으로 -US 접미사을하는 것입니다 계정 :

on t2.c2 = t1.c1 + '-US' 

또는

on t1.c1 = left(t2.c2, len(t2.c2) - 3) 

성능을 원할 경우 인덱스가있는 계산 열을 고려할 수 있습니다. 이런 식으로 뭔가 :이 다음 인덱스를 허용 할

alter table t1 add c1_us as (c1 + '-US'); 

create index t1_c1_us on t1(c1_us); 

같은 조건에 사용되는 :

on t2.c2 = t1.c1_us