Zero é um valor numérico. É um definido com propriedades matemáticas precisas. (Você pode fazer aritmética nele ...)
NULL significa a ausência de qualquer valor. Você não pode fazer nada com ele, exceto testá-lo.
O branco está mal definido. Significa coisas diferentes em contextos diferentes para pessoas diferentes. Por exemplo:
- Alguém pode significar um valor de string de comprimento zero:ou seja, um sem caracteres (
''
). - Alguém pode significar um valor de string de comprimento diferente de zero consistindo apenas de caracteres não imprimíveis (SPACE, TAB, etc). Ou talvez consistindo em apenas um único caractere SPACE.
- Em alguns contextos (onde caractere e string são tipos diferentes), alguém pode se referir a um valor de caractere não imprimível.
- Alguém pode até querer dizer "qualquer coisa que não aparece quando você imprime ou exibe".
A questão é que "em branco" não tem um único significado bem definido. Pelo menos não na terminologia de TI (nativa) em inglês. Provavelmente é melhor evitá-lo... se você quiser que outros profissionais de TI entendam o que você quer dizer . (E se outra pessoa usar o termo e não for óbvio pelo contexto, peça que digam precisamente o que significam!)
Não podemos dizer nada geralmente significativo sobre como ZERO / NULL / BLANK são representados, quanta memória eles ocupam ou algo assim. Tudo o que podemos dizer é que eles são representados de forma diferente entre si .... e que a representação real é implementação e dependente do contexto .