Sql连接类似的列,但不一样

时间:2016-07-01 14:34:05

标签: sql sql-server

假设我在一个表中有列a,在另一个表中有列2。他们都是navchar。第2列以' -US'结尾。如果第1列与2相同但没有美国结尾,我如何加入这两个表?

2 个答案:

答案 0 :(得分: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 + '%'

答案 1 :(得分: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