Можно использовать .ToString()
для получения String
от StringBuilder
.
Используя NULL
, вы можете различать «не помещать данные» и « поместите пустые данные ».
Еще несколько отличий:
A LENGTH
of NULL
равно NULL
, LENGTH
пустая строка - 0
.
NULL
сортируются перед пустыми строками.
COUNT (message)
подсчитывает пустые строки, но не NULL
s
Вы можете искать пустую строку с помощью связанной переменной, но не по NULL
. Этот запрос:
SELECT *
ИЗ mytable
ГДЕ mytext =?
никогда не будет соответствовать NULL
в mytext
, какое бы значение вы ни передали от клиента. Чтобы сопоставить NULL
s, вам нужно будет использовать другой запрос:
SELECT *
ИЗ mytable
ГДЕ mytext IS NULL
Одна вещь, которую следует учитывать, если вы когда-либо план переключения баз данных заключается в том, что Oracle не поддерживает пустые строки . Они автоматически преобразуются в NULL, и вы не можете запрашивать их с помощью предложений типа WHERE somefield = ''
.
Следует иметь в виду, что NULL может значительно усложнить кодовые пути. В Python, например, большинство адаптеров баз данных / ORM сопоставляют NULL
с None
.
Например:
print "Hello, %(title)s %(firstname) %(lastname)!" % databaserow
может привести к «Hello, None Joe Doe!» Чтобы избежать этого, вам понадобится что-то вроде этого кода:
if databaserow.title:
print "Hello, %(title)s %(firstname) %(lastname)!" % databaserow
else:
print "Hello, %(firstname) %(lastname)!" % databaserow
Что может значительно усложнить ситуацию.
Я не знаю, какой здесь лучший метод, но я бы обычно ошибался в пользу null, если вы не хотите, чтобы null означал что-то отличное от пустой строки, а ввод пользователя соответствует ваше определение пустой строки.
Обратите внимание, что я говорю, что ВАМ нужно определить, как вы хотите, чтобы они были разными. Иногда имеет смысл сделать их разными, иногда нет. Если нет, просто выберите один и придерживайтесь его. Как я уже сказал, большую часть времени я предпочитаю NULL.
О, и имейте в виду, что если столбец имеет значение NULL, запись вряд ли появится практически в любом запросе, который выбирает (имеет предложение where, в терминах SQL) на основе этого столбца, если, конечно, не выбран нулевой столбец.