91

How do you replace a NULL value in the select with an empty string? It doesn't look very professional to output "NULL" values.

This is very unusual and based on my syntax I would expect it to work. I'm hoping for an explanation why it doesn't.

select CASE prereq WHEN (prereq IS NULL) THEN " " ELSE prereq end from test;

Example of what the original table looks like, what I want, and what actually prints:

original     wanted      what actually prints
--------     ------      ---------------------
value1       value1      
NULL                     NULL
value2       value2      
NULL                     NULL

As you can see it does the opposite of what I want, hence I tried flipping the IS NULL to IS NOT NULL and of course that didn't fix it. I also tried swapping the position of when case, which did not work.

It seems the 3 solutions given below all do the task.

select if(prereq IS NULL ," ",prereq ) from test
select IFNULL(prereq,"") from test
select coalesce(prereq, '') from test
Null
  • 1,950
  • 9
  • 30
  • 33

10 Answers10

139

If you really must output every values including the NULL ones:

select IFNULL(prereq,"") from test
JScoobyCed
  • 10,203
  • 6
  • 34
  • 58
  • if you are using IFNULL with groupBy, then there should be an alias: select IFNULL(prereq,"") as n from test group by n. – Salar Nov 28 '19 at 07:46
88
SELECT COALESCE(prereq, '') FROM test

Coalesce will return the first non-null argument passed to it from left to right. If all arguemnts are null, it'll return null, but we're forcing an empty string there, so no null values will be returned.

Also note that the COALESCE operator is supported in standard SQL. This is not the case of IFNULL. So it is a good practice to get use the former. Additionally, bear in mind that COALESCE supports more than 2 parameters and it will iterate over them until a non-null coincidence is found.

Mosty Mostacho
  • 42,742
  • 16
  • 96
  • 123
  • 1
    Agreed it is worth noting the MySQL specificity of IFNULL. It works in the OP case but might not in others. – JScoobyCed Sep 10 '13 at 02:26
18

Try below ;

  select if(prereq IS NULL ," ",prereq ) from test
16

Some of these built-in functions should work:

COALESCE(value,...)

Returns the first non-NULL value in the list, or NULL if there are no non-NULL values.

IS NULL

Tests whether a value is NULL.

IFNULL(expr1,expr2)

If expr1 is not NULL, IFNULL() returns expr1; otherwise it returns expr2.

showdev
  • 28,454
  • 37
  • 55
  • 73
9
select IFNULL(`prereq`,'') as ColumnName FROM test

this query is selecting "prereq" values and if any one of the values are null it show an empty string as you like So, it shows all values but the NULL ones are showns in blank

  • 2
    Consider adding an explanation of what this code does. A code sample might be immediately useful, but an explanation is far more useful in the long run. – JustCarty Feb 19 '19 at 10:27
3

The original form is nearly perfect, you just have to omit prereq after CASE:

SELECT
  CASE
    WHEN prereq IS NULL THEN ' '
    ELSE prereq
  END AS prereq
FROM test;
M.Nemes
  • 49
  • 1
  • 4
2

Try COALESCE. It returns the first non-NULL value.

SELECT COALESCE(`prereq`, ' ') FROM `test`
SenorAmor
  • 3,351
  • 16
  • 27
0
SELECT IF(TRIM(COALESCE(prereq, '')) = '', '[ empty ]', field1) FROM test 

Query will fill up '[ empty ]' text where prereq column is null or is any length of whitespace

See TRIM COALESCE and IS NULL for more info.

Also Working with null values from the MySQL docs

christine
  • 31
  • 5
0

Try this, this should also get rid of those empty lines also:

SELECT prereq FROM test WHERE prereq IS NOT NULL;
Hunter McMillen
  • 59,865
  • 24
  • 119
  • 170
-2

I have nulls (NULL as default value) in a non-required field in a database. They do not cause the value "null" to show up in a web page. However, the value "null" is put in place when creating data via a web page input form. This was due to the JavaScript taking null and transcribing it to the string "null" when submitting the data via AJAX and jQuery. Make sure that this is not the base issue as simply doing the above is only a band-aid to the actual issue. I also implemented the above solution IFNULL(...) as a double measure. Thanks.

Daniel
  • 1
  • 1
  • 1