2016-07-01 8 views
-2

Angenommen, ich habe Spalte a in einer Tabelle und Spalte 2 in einem anderen. Sie sind beide Navchar. Spalte 2 endet mit '-US'. Wie schließe ich die beiden Tabellen an, vorausgesetzt, Spalte 1 ist identisch mit 2, aber ohne Endung von us?Sql Join auf ähnliche Spalten, aber nicht gleich

+2

'auf t2.c2 = t1.c1 +‚-US'' Das könnte dir auch Versuchen Sie 'und t2.c2 wie t1.c1 + '%' hinzuzufügen, um zu sehen, ob Sie einen besseren/schnelleren Plan bekommen. – shawnt00

Antwort

1

Sie können entweder

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

tun oder wenn es nicht immer ist in -US zu Ende geht, dann können Sie versuchen, dieses

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

Offensichtliche, was zu tun ist, um die -US Suffix tragen Konto:

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

oder vielleicht:

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

Wenn Sie Leistung wünschen, können Sie eine berechnete Spalte mit einem Index berücksichtigen. Etwas wie folgt aus:

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

create index t1_c1_us on t1(c1_us); 

Dies würde dann einen Index erlauben, für einen Zustand verwendet werden, wie zum Beispiel:

on t2.c2 = t1.c1_us