TSQL在另一个表中查找具有不同写入的记录

时间:2013-05-10 11:57:02

标签: tsql substring sql-server-2012 union

我有一个“MasterTable”,其中包含以下记录:

MasterTable:

Col1
PX02894
PX02895
PX02896
PX02897/98

从查询表中我想获得Col2链接,保持MasterTable的格式,表示为下面的输出表。

LookupTable中:

Col1            Col2
PX02894-PX02895 Link001
PX02896         Link002
PX02897-PX02898 Link003

可输出:

Col1         Col2
PX02894      Link001
PX02895      Link001
PX02896      Link002
PX02897/98   Link003

正如你所看到的,写作是不同的“/”和“ - ”。

我试过

  

len(col1)> 7那么左(col1,5)+右(col1,2)

但那是错的。我需要先联盟吗?

这是Fiddle

我需要在这做什么?提前谢谢。

2 个答案:

答案 0 :(得分:1)

select m.col1,l.col2
From MasterTable m
inner join linkTable l
On (Substring(m.col1,1,7) = SubString(l.col1,1,7)) or (Substring(m.col1,1,7) = Substring(l.col1,9,7))
只要您可以信任数据格式,

就应该这样做。如果没有更多的检查,例如

Substring(l.col1,8,1) = '-'

答案 1 :(得分:0)

试试这个 - 这适用于sybase--如果使用SQL Server查找备用函数

选择子串(col1,1,(charindex(“ - ”,col1)-1)),
UNION
select substring(col1,(charindex(“ - ”,col1)+1),char_length(col1))

谢谢, 戈帕尔