Why Oracle persists in this ridiculously bad design decision is beyond me. An empty string is a STRING of length 0. NULL is not a string at all. Forget philosphical arguments, it doesn’t help in any way to fail to distinguish ” from null. Whoever decided this obviously never had to write any code to work with recordsets returned from the database. I end up putting a single space where I really just wanted an empty string.