We've noticed in QGIS (v. 3.8.1) that VARCHAR columns from PostgreSQL(v9.5) containing empty values are being read as the text value of the word "NULL".
Here's the data in QGIS (highlighted records are VARCHAR, the other one is integer):
And here's the same data for the same record in DBeaver:
You can see that DBeaver treats the NULL values as empty, while QGIS treats the same empty data as the word NULL.
This is an issue for a number of reasons, but came to our attention when trying to filter a set of data in QGIS using a WHERE COLUMN_NAME LIKE 'N%' - we were looking for values referring to NO/NON/N but ended up picking up all the NULL values as well!