Null Intern

Description


Your company hired an intern database engineer, who immediately started updating the data in the system. Unfortunately, he hasn’t fully grasped the concept of NULL values yet and he performed some incorrect inserts and updates to the departments table, which has the following structure:

  • id: The unique department ID;
  • name: The name of the department;
  • description: The description of the department.

Now you have a table where the description column holds values such as ' NULL ', NULL, 'nil' and ' - '. You need to find out exactly how many records in the table should have NULL in the description column, regardless of whether the intern input the value correctly or not.

He used the following values to indicate NULL:

  • NULL: just a regular NULL value;
  • ‘<spaces>NULL<spaces>‘: NULL as a case insensitive (i.e. NuLl is also OK) string with an arbitrary number of spaces at the beginning and at the end;
  • ‘<spaces>nil<spaces>‘: nil as a case insensitive (i.e. niL is also OK) string with an arbitrary number of spaces at the beginning and at the end;
  • ‘<spaces>-<spaces>‘: a single dash with an arbitrary number of spaces at the beginning and at the end.

Given the departments table, compose the resulting table with the single column number_of_nulls containing a single value: the number of rows in the departments table that are supposed to have NULL in the description.

Example

For the following table departments

id name description
1 finance NULL
2 marketing ’ NULL’
3 IT ‘not nil’
4 accounting ’-‘

the output should be

number_of_nulls
3
  • [execution time limit] 10 seconds (mysql)

Solution


1
2
3
4
5
6
7
/*Please add ; after each select statement*/
CREATE PROCEDURE nullIntern()
BEGIN
	SELECT count(*) AS number_of_nulls
    FROM departments
        WHERE description REGEXP '^[[:space:]]*(NULL|nil|-)[[:space:]]*$' OR description IS NULL;
END