Co to jest NULL?
W SQL, NULL reprezentuje brak wartości. To nie jest to samo co pusty ciąg znaków („”), zero (0) lub jakikolwiek inny konkretny typ danych. NULL jest specjalnym stanem, który wskazuje, że wartość jest nieznana lub nie została jeszcze przypisana. W BigQuery, podobnie jak w innych systemach baz danych, NULL ma swoje specyficzne cechy i zachowanie.
Zastosowanie NULL
NULL jest używany w BigQuery w wielu scenariuszach, w tym:
- Reprezentacja braku danych: NULL jest używany do oznaczenia brakujących wartości w kolumnach tabel. Na przykład, jeśli w tabeli klientów nie podano adresu e-mail, możemy umieścić NULL w tej kolumnie.
- Operacje na danych: NULL może być używany w różnych operacjach na danych, takich jak agregacja, sortowanie i łączenie tabel. Na przykład, funkcja COUNT(*) zlicza wszystkie wiersze w tabeli, w tym te z wartościami NULL, podczas gdy funkcja COUNT(column) zlicza tylko wiersze z nie-NULL wartościami w danej kolumnie.
- Przetwarzanie zapytań: NULL jest używany w warunkach WHERE i JOIN, aby filtrować dane lub łączyć tabele w oparciu o obecność lub brak wartości.
Przykład użycia w BigQuery
Załóżmy, że mamy tabelę „Produkty” z następującymi kolumnami:
CREATE TABLE Produkty ( ProduktID INT64, Nazwa VARCHAR, Cena FLOAT64, Dostępność BOOLEAN, Opis VARCHAR );
W tej tabeli, kolumna „Opis” może zawierać wartości NULL, jeśli produkt nie ma opisu.
Poniższy kod SQL pokazuje, jak użyć funkcji IFNULL() do zastąpienia wartości NULL w kolumnie „Opis” wartością „Brak opisu”:
SELECT ProduktID, Nazwa, Cena, Dostępność, IFNULL(Opis, 'Brak opisu') AS Opis FROM `projekt.dataset.Produkty`;
Najczęstsze błędy i sposoby ich unikania
Najczęstsze błędy związane z NULL w BigQuery to:
- Niepoprawne porównania: NULL nie jest równy żadnej wartości, w tym samemu sobie. Aby sprawdzić, czy wartość jest NULL, należy użyć operatora IS NULL. Na przykład, zamiast „WHERE kolumna = NULL”, należy użyć „WHERE kolumna IS NULL”.
- Niepoprawne użycie funkcji agregujących: Funkcje agregujące, takie jak SUM(), AVG(), MAX(), MIN() i COUNT(), ignorują wartości NULL. Aby uwzględnić wartości NULL w obliczeniach, należy użyć funkcji IFNULL() lub COALESCE() do zastąpienia ich wartościami domyślnymi.
- Niepoprawne łączenie tabel: NULL nie jest dopasowywany w operacjach łączenia tabel. Aby połączyć tabele, w których mogą występować wartości NULL, należy użyć odpowiednich warunków łączenia i funkcji, takich jak LEFT JOIN lub RIGHT JOIN.
Optymalizacje i najlepsze praktyki
Aby zoptymalizować zapytania z użyciem NULL w BigQuery, należy:
- Używać funkcji IS NULL i IS NOT NULL: Zamiast porównywać wartości do NULL, użyj operatorów IS NULL i IS NOT NULL, aby sprawdzić, czy wartość jest NULL.
- Używać funkcji IFNULL(), COALESCE() i NVL(): Zastąp wartości NULL wartościami domyślnymi za pomocą funkcji IFNULL(), COALESCE() lub NVL() przed użyciem funkcji agregujących lub operacji obliczeniowych.
- Unikać niepotrzebnych operacji na danych: Jeśli nie potrzebujesz wartości NULL, unikaj ich przetwarzania. Na przykład, jeśli potrzebujesz tylko nie-NULL wartości w kolumnie, użyj funkcji WHERE kolumna IS NOT NULL.
Porównanie z innymi dialektami SQL
NULL jest obsługiwany w większości dialektów SQL, w tym MySQL, PostgreSQL i Oracle. Podstawowe funkcje i operacje związane z NULL są podobne, ale mogą istnieć drobne różnice w składni lub zachowaniu. Na przykład, w niektórych dialektach SQL funkcja IFNULL() jest nazywana NVL(), a w innych może być dostępna dodatkowa funkcja COALESCE().