如何处理Target表中的NA值

时间:2014-08-09 09:52:05

标签: sql-server-2008 sql-server-2012

嗨朋友我在sql server中有一点疑问如何处理目标表不匹配的记录替换为NA.please告诉mehow在sql server中解决这个问题。

表A:

   id    | Descr
   1     |ab
   2     |bc
   3     |de
   5     |
   6     |jk

表B:

id  |  Descr
1   |
2   |
4   |
5   |

这里我想要更新tableB表描述来自TableA基于id列

我试过以下    合并TableB dest   使用TbleA雄鹿   在dest.id = stag.id上   当匹配时    更新

SET  
 dest.[id]= CASE WHEN coalesce(ltrim(rtrim(stag.[id])),'') = '' THEN 'NA' ELSE ltrim(rtrim(stag.[id])) END

 ,dest. [descr]=   CASE WHEN coalesce(ltrim(rtrim(stag.[descr])),'') = '' THEN 'NA' ELSE ltrim(rtrim(stag.[descr])) END

我下面放了

表B:

id  |  Descr
1   |  ab
2   |  bc
4   |  
5   |  NA

但我想要输出如下 表B:

id  |  Descr
1   |  ab
2   |  bc
4   |  NA 
5   |  NA

请告诉我如何处理sql server中的NA值

1 个答案:

答案 0 :(得分:0)

您可以使用带有update语句的左连接,并将descr设置为NA,其中它是NULL。试试这个:

UPDATE dest
SET dest.descr = 
  CASE 
    WHEN coalesce(ltrim(rtrim(stag.[descr])),'') = '' THEN 'NA'
    WHEN stag.[descr] IS NULL THEN 'NA' 
    ELSE ltrim(rtrim(stag.[descr])) 
  END
FROM TableB dest
LEFT JOIN TableA stag on dest.id = stag.id;

这是展示它的SQL Fiddle