由于空值,使用Case语句更新失败

Cha*_*128 4 sql sql-server case

我有一个表中的列,我想将当前值与另一个列交换为特定条目.当我没有把它留空时,我得到一个无空约束.

UPDATE bet.betEntry
SET direction= 
            CASE 
                WHEN (direction = '599065F7-96A9-4DF5-8577-2203BE9AA2E0') THEN  'ABD92DB9-58D8-4C60-8A34-4C00EBBAB4A5'
                WHEN (direction = 'ABD92DB9-58D8-4C60-8A34-4C00EBBAB4A5') THEN '599065F7-96A9-4DF5-8577-2203BE9AA2E0'
         END    
FROM bet.betEntry be JOIN bet.fixture f ON  be.fixtureId = f.fixtureId
WHERE f.fixtureDate > '2019-01-12 13:29:00.000'
Run Code Online (Sandbox Code Playgroud)

Gor*_*off 6

添加一个where条款:

UPDATE bet.betEntry
    SET direction = (CASE WHEN direction = '599065F7-96A9-4DF5-8577-2203BE9AA2E0'
                          THEN  'ABD92DB9-58D8-4C60-8A34-4C00EBBAB4A5'
                          WHEN direction = 'ABD92DB9-58D8-4C60-8A34-4C00EBBAB4A5'
                          THEN '599065F7-96A9-4DF5-8577-2203BE9AA2E0'
                     END)   
FROM bet.betEntry be JOIN
     bet.fixture f
     ON  be.fixtureId = f.fixtureId
WHERE f.fixtureDate > '2019-01-12 13:29:00.000' AND
      direction IN ('599065F7-96A9-4DF5-8577-2203BE9AA2E0', '599065F7-96A9-4DF5-8577-2203BE9AA2E0');
Run Code Online (Sandbox Code Playgroud)

你也可以解决这个问题ELSE direction.但是,这不是很好,因为它尝试更新不需要更新的行.