Mamy bazę danych z garstką szerokich tabel (po 40-80 kolumn) i właśnie znaleźliśmy błąd, który wprowadził wartości NULL do około 500 rekordów. Wartości NULL mogą pojawiać się w dowolnej z kolumn (wszystkie są kolumnami całkowitymi, patrz obrazek poniżej), ale te wartości NULL powodują problemy z jednym z naszych systemów raportowania, których nie można łatwo zmienić. Musimy zastąpić wartości NULL konkretną wartością statyczną (w tym przypadku 99), ale ponieważ ta zmiana musi być dokonywana na podstawie kolumny dla ponad 250 różnych kolumn, wolałbym nie pisać pojedynczych skryptów TSQL aktualizujących każdą kolumnę jeden o jeden.Zaktualizuj wszystkie wartości SQL NULL w wielu kolumnach, używając klauzuli WHERE na poziomie kolumny?
Mój mózg jest zbyt smażony, aby wymyślić sprytne rozwiązanie, więc moje pytanie brzmi: jak mogę wykonać to zadanie dla wszystkich kolumn na stole (lub lepiej jeszcze wiele tabel) za pomocą prostego i czytelnego zapytania SQL. Mogę wyizolować rekordy wystarczająco łatwo, używając łańcucha WHERE (Answer_1 IS NULL) OR (Answer_2 IS NULL) OR ...
lub nawet numerów AdministrationID dla każdej tabeli, ale ta sztuczka nie zadziała podczas aktualizacji, ponieważ klauzula where nie dotyczy wiersza, a nie kolumny. Jakakolwiek rada?
Oto przykładowe zapytanie pokazując kilka zapisów z 4 różnych tabelach:
To boli, naprawdę źle. –
Chyba powinienem dodać ograniczenie zerowe z domyślnym 99 na każdej kolumnie? – njzk2
Patrzę na to i pytam siebie, dlaczego kolumny nie są następujące: AdministrationID, InstrumentID, AnswerID, wartość. Heck, możesz dodać jeszcze jeden identyfikator, aby móc scalić wszystkie te tabele w 1 ... –