про NULL вы тоже ерунду написали. Угадайте почему.
Не имею понятия. Зависит от языка. Я имел в виду язык SQL. Завадая запрос к базе, и получая ответ NULL, делаем вывод, что запрос ничего не нашёл. Если получаем ответ 0, то это значит, что получили единственный ответ и он равен нулю.
Да нет же! Если запрос ничего не нашел, мы получаем
no data found, курсор в состоянии
closed или там со свойством
notfound = true или что там вашим сервером СУБД для таких случаев предусмотрено. Если вы пишете
Код:
select column1
from my_table
where column2 = 'abc'
и получаете
null, значит, у вас найдена в таблице 1 строка, где в поле
column2 стоит значение 'abc', а в поле
column1 -
null (отсутствие значения). И ситуация простая, только пока вы работаете с числами, а как только вы переходите к строкам, начинается развлекуха, потому что стандарт ANSI SQL требует различать пустую строку и
null, и некоторые таки различают (postgres), а некоторые (oracle) - нет. И не потому, что они злые нонконформисты от природы, а потому, что задолго до появления стандарта одни СУБД разрабатывались на языках, где были строки С-типа (как в языке С, заканчивающиеся двоичным нулем и не могущие этот двоичный ноль содержать в середине), а другие - на языках со строками паскалевского типа (где длина строки указывалась в нулевом символе строки). А потом, когда уже приняли стандарты, поздно было пить боржоми, обратная совместимость была дороже.
-- 29.06.2015, 02:43 --Я имел в виду язык SQL.
Нет, кстати, такого языка - SQL
Ну то есть он конечно есть, но есть стандарт (его обычно называют ANSI SQL) и есть энное количество конкретных СУБД, каждая со своей реализацией стандарта. При том, что у каждой из них в документации написано, что они на 100% поддерживают стандарт, на самом деле к вопросу поддержки разработчики подходят настолько творчески, что даже SQL-92 у них порой несовместим. Фирменная "фишка" Oracle, например, которую упоминают ораклоненавистники в каждом холиваре - оракл до сих пор не понимает ключевое слово
except, ему
minus подавай, хотя казалось бы - 23 года прошло. И с обработкой
null значений точно такая же ерунда. Если не хочешь сюрпризов - читай документацию по своей СУБД, а не стандарт (поэтому стандарт никто и не читает). А если вы аналогию приводите с
null значениями, то указывайте вашу СУБД и версию, потому что у вашего собеседника ваша аналогия легко может выдать противоположный результат.