类似列上的Sql联接,但不相同
假设一个表中有a列,另一个表中有第2列。他们都是navchar。第2列以“-US”结尾。如果第1列与第2列相同,但没有us结尾,那么如何连接这两个表?您可以选择其中一个类似列上的Sql联接,但不相同,sql,sql-server,Sql,Sql Server,假设一个表中有a列,另一个表中有第2列。他们都是navchar。第2列以“-US”结尾。如果第1列与第2列相同,但没有us结尾,那么如何连接这两个表?您可以选择其中一个 SELECT a.Field1 ,a.Field2 ,b.Field3 FROM TableA a JOIN TableB b ON a.Fieldname + '-US' = b.FieldName 或者,如果它不总是在美国结束,那么你可以试试这个 SELECT a.Field1
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 + '%'
显然要做的事情是将
-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
在t2.c2=t1.c1+'-US'
上,您还可以尝试添加和t2.c2,如t1.c1+'%'
以查看是否有更好/更快的计划。