Удалить реестр, если какой-либо столбец имеет значение NULL в SQL Server 2008 - PullRequest
1 голос
/ 12 февраля 2012

Я хотел бы удалить строки таблицы (создание другой как обновленной версии), если какая-либо из них имеет нулевое значение

например

att1  att2  att3
-----------------
1.0    2.9   NULL
23.6   7.9   8.9
43.6   6.9   1.9

И ПОЛУЧИТЬ

att1  att2  att3
-----------------
23.6   7.9   8.9
43.6   6.9   1.9

Как лучше всего это сделать?

Ответы [ 2 ]

3 голосов
/ 12 февраля 2012

Самый простой способ

DELETE FROM T 
WHERE  att1 IS NULL 
        OR att2 IS NULL 
        OR att3 IS NULL 

Если в какой-то момент у вас будет множество столбцов, это может стать проще.

DELETE FROM T 
WHERE  EXISTS (SELECT * 
               FROM   (VALUES(att1), 
                             (att2), 
                             (att3)) V(att) 
               WHERE  att IS NULL) 

Вы также можете рассмотреть что-то вроде

DELETE FROM T 
WHERE att1 + att2 + att3 IS NULL

но это может привести к ненужным проблемам с ошибками переполнения.

2 голосов
/ 12 февраля 2012

Предполагая, что все столбцы являются числами ...

DELETE FROM myTable WHERE att1+att2+att3 IS NULL
...