Assuming your table looks something like this:
id column1 column2 column3 ... 187 2 9 null 456 null 37 42 937 7 12 4 ...
The real answer is: you shouldn't need to. The answer to the question you asked is:
select case when column1 is null then 0 else 1 end +case when column2 is null then 0 else 1 end +case when column3 is null then 0 else 1 end +... as not_null_columns from TableA where id = 937
Any time you find yourself wanting to do something to "all columns in a row" like this, step back and consider redesigning the table. There's a good chance the table isn't in first normal form. The main symptom is finding yourself writing clumsy queries with a lot of repetitive expressions.
A normalized one-to-many table would look something like this:
id columnx columnvalue 187 1 2 187 2 9 456 2 37 456 3 42 937 1 7 937 2 12 937 3 4 ...
Now the query gets a lot simpler:
select count(columnx) as not_null_columns from TableB where id = 937
Much nicer, wouldn't you agree?
Dig Deeper on Oracle and SQL
Related Q&A from Rudy Limeback
Read SQL expert Rudy Limeback's advice for counting combinations in a table with SQL's GROUP BY clause Continue Reading
Read about the Mimer Validator, a tool used to verify your SQL code, in this tip from SQL expert Rudy Limeback. Continue Reading
Read an example of an SQL case expression from our SQL expert Rudy Limeback. Continue Reading