Почему '0' > null будет true, а не false?
Кто вам сказал? При сравнении строки с null последний преобразуется в пустую строку ("").Дока, таблица Comparison with Various Types, первая строка.
потому что '0' это код символа и равен он 48 и при преобразовании к bool будет давать true