Determining Table Columns that Contain NULL Values
Jim Knicely authored this tip.
A client recently asked if we had a Vertica function that could return a list of columns from a table that contains NULL values. There aren’t any built-in functions for that, but there is always a fast solution available in Vertica!
Here’s one!
Example:
dbadmin=> SELECT * FROM null_cols;
c1 | c2 | c3 | c4 | c5
----+------+-----+----+-------
| TEST | 1.1 | 1 | STUFF
| TEST | | 1 | STUFF
| | | 1 | STUFF
1 | TEST | 1.1 | 1 | STUFF
1 | TEST | 1.1 | 1 | STUFF
1 | TEST | | 1 | STUFF
1 | | | 1 | STUFF
(7 rows)
dbadmin=> CREATE OR REPLACE VIEW null_cols_vw AS
dbadmin-> SELECT COUNT(c1) < COUNT(1) c1_has_nulls,
dbadmin-> COUNT(c2) < COUNT(1) c2_has_nulls,
dbadmin-> COUNT(c3) < COUNT(1) c3_has_nulls,
dbadmin-> COUNT(c4) < COUNT(1) c4_has_nulls,
dbadmin-> COUNT(c5) < COUNT(1) c5_has_nulls
dbadmin-> FROM null_cols;
CREATE VIEW
dbadmin=> SELECT * FROM null_cols_vw;
c1_has_nulls | c2_has_nulls | c3_has_nulls | c4_has_nulls | c5_has_nulls
--------------+--------------+--------------+--------------+--------------
t | t | t | f | f
(1 row)
dbadmin=> INSERT INTO null_cols SELECT 1, 'TEST', 1.1, 1, NULL;
OUTPUT
--------
1
(1 row)
dbadmin=> UPDATE null_cols SET c1 = 1 WHERE c1 IS NULL;
OUTPUT
--------
3
(1 row)
dbadmin=> SELECT * FROM null_cols_vw;
c1_has_nulls | c2_has_nulls | c3_has_nulls | c4_has_nulls | c5_has_nulls
--------------+--------------+--------------+--------------+--------------
f | t | t | f | t
(1 row)
Have Fun!
0