Wykaz rekordów gdzie wszytskie kolumny są puste (NULL)

0

Czołem,

załóżmy, że mamy tabelę z 30 kolumnami, w tym jedna ID jest wypełniona na pewno, a reszta może się zdarzyć będzie wypełniona samymi NULL'ami.
Czy jest jakiś sprytny sposób by wyłuskać takie rekordy nie pisząc czegoś w rodzaju:

WHERE col1 is null and col2 is null ... col30 is null ?

Z góry dzięki za podpowiedzi, rady i inne pożyteczne wpisy ;)

BB

1

Sam nie kojarzę takiego hacka (a jeśli ktoś tutaj wrzuci, to będę wdzięczny - zawsze fajnie się czegoś nauczyć), ale poszukałem w necie i wygląda na to, że musisz te wszystkie kolumny wykazać w zapytaniu :( Rzuć okiem na https://stackoverflow.com/questions/3108262/where-all-is-not-null lub https://stackoverflow.com/questions/51793025/select-rows-that-have-at-least-one-null-value

0

Możesz zrobić trigger bazodanowy lub coś w logice aplikacji co przy insert/update sprawdza, czy dane kolumny są/nie są null i w dodatkowej kolumnie daje oznaczenie "tak"/"nie".

Wtedy po prostu dajesz warunek na jedną kolumnę.

2

nie ma, mozna co najwyżej skrócic:

where coalesce(col1,col2..col30) is null
3
DECLARE @query NVARCHAR(MAX);

SELECT @query = ISNULL(@query+', ','') + [name] 
                FROM  sys.columns 
                WHERE object_id = OBJECT_ID('TableName') 
                AND  [name] != 'IgnoreThisColumn1' ;

SET @query = N'SELECT * FROM TableName WHERE COALESCE('+ @query +') IS NULL';

EXECUTE(@query)
0

Dzięki wszystkim - zwłaszcza @ipsd. Co prawda póki co dostaje błąd konwersji ... ale rozumiem idee i wygląda, że to jest to czego szukałem :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1