连接上的SQL Server模式匹配

时间:2016-04-28 10:40:55

标签: tsql sql-server-2012

我有一系列标识符,格式为AAAA-NNN-AAA。

我想将此连接到标识符上的另一个表,但每个NNN在NNN中的第二个或第三个位置包含1,2或3。

所以ABCD-010会匹配ABCD-010或ABCD-011或ABCD-001等但不符合ABCD-121或ABCD-003

我明显地看了Like PATINDEX,但是想知道是否有标准的'效率'方法?

1 个答案:

答案 0 :(得分:0)

您可以实现的方法之一是:

create table #t1
(
    id nvarchar(max)
)
create table #t2 
(
    id nvarchar(max)
)
insert into #t1 values('ABCD-010')
insert into #t2 values('ABCD-021')

select *
from #t1 t1
join #t2 t2 on left(t1.id,4) = left(t2.id,4)
     and (cast(right(t2.id, 1) as int) in (1,2,3) or cast(left(right(t2.id, 2),1) as int) in (1,2,3))