2013-05-10 73 views
0

我有一个“MasterTable”与以下记录:TSQL找到不同的书写记录在另一张表

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)+ RIGHT(col1,2)

但这是错误的。我是否首先需要联盟?

这里有一个Fiddle

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

+0

是查找表送花儿给人只有两个ID,即PX02900-PX02949是否可能是一个入口? – 2013-05-10 12:07:14

+0

它总是只有两个ID – SvenB 2013-05-10 12:16:10

回答

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) = '-' 
0

试试这个 - 如果你使用SQL Server找到替代的功能

这个作品在sybase--

选择子(col1,1,(CHARINDEX( “ - ”中,col1)-1)),
UNION
选择子(COL1,(CHARINDEX( “ - ”,COL1)+1),CHAR_LENGTH(COL1))

感谢, 戈帕尔

相关问题