2016-07-01 7 views
-2

私はある表に列aを持ち、別の表に列2を持っているとします。どちらもnavcharです。列2は '-US'で終わります。列1は2と同じですが、私たちが終了していない場合、2つのテーブルにどのように参加しますか?Sqlは同じ列に結合しますが、同じではありません

+2

'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 

を行うことができますか、それは常に-USで終わることはないだろうならば、あなたが行うには、この

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); 

これは、インデックスのような条件のために使用することができるようになる:-US'`あなたはまたかもしれないT2.C2 = T1.C1 +」に `

on t2.c2 = t1.c1_us 
関連する問題