Mithrandir Macgregor, me temo que estás en un error. '' (cadena vacía) es diferente de NULL. foo talvez lo dice porque oracle considera las cadenas vacias como nulas PequeñoMauro Bueno, Oracle no considera las cadenas vacías como nulas, ya lo viví, jejeje.
Efectivamente acostumbro a trabajar con Oracle.
He provado las siguientes instrucciones para ver si dejamos claro algo.
Los 4 primeros campos de la tabla de usuarios están declarados como NOT NULL.
T.ID_USER, T.LEADER y T.BANED son campos númericos, el resto varchar2 (strings o cadenas, como prefieran llamarlo)
insert into MICRO.TBL_USER T (T.ID_USER, T.USERNAME, T.NAME, T.PASSWORD, T.LEADER, T.BANED)
values ( 500,'',' ',' ','',NULL)
Intentando insertar en el segundo campo de la tabla (T.USERNAME, un campo NOT NULL) una cadena vacía ''.
Resultado: ORA-01400:no se puede realizar una inserción NULL en ("MICRO"."TBL_USER"."USERNAME")
Se quejó insertando la cadena '' vacía y el error habla de NULL!!
modificamos de la sentencia sql la parte del values por :
values ( 500,'500',' ',' ','',NULL)
De esta manera intentamos insertar en el campo T.LEADER (numérico) una cadena vacía ''.
Resultado: 1 row inserted
No dió error, por tanto no hubo incompatibilidad de tipos, ¿se insertó una cadena vacía en un campo numérico?

¿ o se insertó NULL????
Comprovamos el contenido con la siguiente consulta:
Select T.ID_USER
From MICRO.TBL_USER T
where t.LEADER is null
Resultado: ID_USER = 500
Por tanto (en ORACLE) creo que queda claro que NULL (sin comillas) es ausencia de valor, 'NULL' una cadena de 4 carácteres, y '' (la cadena vacía) también es ausencia de valor.
No sabía que otros sistemas gestores se comportaban de forma un tanto diferente, ahunque tampoco me sorprende que grupos distintos de personas implementen ligeras variaciones en distintos SGBD's.
PequeñoMauro creo que pensabas en otro SGBD cuando mandaste tu mensaje.