2016-07-01 3 views
-2

Предположим, у меня есть столбец a в одной таблице и столбец 2 в другом. Они оба находчики. Столбец 2 заканчивается на -US. Как присоединиться к двум таблицам при условии, что столбец 1 совпадает с 2, но без окончания?Sql присоединиться к аналогичным столбцам, но не то же самое

+2

'на t2.c2 = t1.c1 +«-US'' Вы могли бы также попробуйте добавить 'и t2.c2, например, t1.c1 + '%'', чтобы узнать, есть ли у вас лучший/более быстрый план. – 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); 

Это позволит затем индекс будет использоваться для такого условия, как:

on t2.c2 = t1.c1_us 
Смежные вопросы