-2

我有一个要求,我需要匹配一个表中的字符串并显示该表的匹配记录。请看下文。

表 A

Column Address      
12333
W.Main  
street      
Apt     
402     

表 B

Column Bad value , good value
Street              St

当我用左外连接加入两个表时,我希望在表 B 中查找后,将表 A 中的 Street 替换为表 B 中的 Mainvalue。

截至目前,左连接显示所有空值并添加一组额外的列,主要输出应如下所示。然后将下面的列数据集中在 1 行中。喜欢 12333 W.Main St Apt 402

12333 W.Main St 公寓 402

到目前为止,我能够做到这一点。

   declare @id int
   declare @value varchar(1000)

   --select dbo.fnNumbersFromStr ('Richmond Plaza - Hwy. 74 E.')
   IF OBJECT_ID('TempDB..#TEMP') IS NOT NULL
    BEGIN
        DROP TABLE #TEMP
    END 

   create table #Temp 
   (ID  int,
    Value varchar(max))

   insert into #Temp 
   SELECT * from MASTER.dbo.SplitWords('12333 W.Main street Apt 402')

   select * from #Temp

   select * from dbo.tStreetNameAbbrevations


   SELECT A.VALUE,B.strLookUpValue FROM #Temp AS A
   LEFT JOIN tStreetNameAbbrevations AS B
   ON A.Value = B.strBadValue
   where B.strLookupvalue is not null

    UPDATE #Temp
    set value = (SELECT B.strLookUpValue FROM #Temp AS A
    LEFT JOIN tStreetNameAbbrevations AS B
    ON A.Value = B.strBadValue
    where B.strLookupvalue is not null)
    where value in (SELECT A.VALUE FROM #Temp AS A
    LEFT JOIN tStreetNameAbbrevations AS B
    ON A.Value = B.strBadValue
    where B.strLookupvalue is not null)
4

1 回答 1

0

将您的 UPDATE 语句更改为:

UPDATE #Temp
    SET Value = (SELECT strLookupValue 
                 FROM tStreetNameAbbrevations 
                 WHERE tStreetNameAbbrevations.strBadValue = #Temp.Value)
WHERE #Temp.ID IN (SELECT ID 
                   FROM #Temp 
                       INNER JOIN tStreetNameAbbrevations ON
                           tStreetNameAbbrevations.strBadValue = #Temp.Value)
于 2013-05-06T20:37:59.717 回答