T-SQL查询从列中删除不存在值的列中的非匹配值

时间:2010-09-28 16:45:30

标签: sql sql-server tsql sql-server-2008

我有两个数据库,包含以下表格:

DatabaseA 表A ColumnA(varChar(10)

DatabaseB 表B ColumnB(varChar(10)

我需要一个查询:

  • 忽略NULL或空字符串
  • 查找columnB中不存在ColumnA值的行
    • 在这种情况下,将ColumnA中非匹配行的值替换为''(空字符串)

这是在MS SQL Server 2008环境中。

2 个答案:

答案 0 :(得分:2)

您可以使用LEFT OUTER JOIN执行此操作,如下所示:

UPDATE TableA
SET columnA = ''
FROM
    TableA 
    LEFT JOIN TableB ON TableA.columnA = TableB.columnB
WHERE
    TableA.columnA IS NOT NULL AND TableA.columnA <> '' AND
    TableB.columnB IS NULL;

答案 1 :(得分:1)

UPDATE TableA 
SET ColumnA = ''
WHERE  ColumnA IS NOT NULL 
  AND ColumnA <> '' 
  AND NOT EXISTS
     (
     SELECT *
     FROM TableB WHERE TableB.ColumnB = TableA.ColumnA
     )