Что значит отправитель null
Что вы должны знать о значениях NULL
Понимать использование пустых значений, чтобы избежать проблем с базой данных
Пользователи, плохо знакомые с миром баз данных, часто путаются с особым значением, относящимся к полю – значением NULL. Это значение можно найти в поле, содержащем данные любого типа, и имеет особое значение в контексте реляционной базы данных. Вероятно, лучше начать обсуждение NULL с нескольких слов о том, что такое NULL не :
Скорее, NULL – это значение, используемое для представления неизвестного фрагмента данных. Часто программисты баз данных используют фразу «значение NULL», но это неверно. Помните: NULL – это неизвестное значение, в котором поле выглядит пустым.
NULL в реальном мире
Давайте рассмотрим простой пример: стол с инвентарём для фруктовой лавки. Предположим, что наш инвентарь содержит 10 яблок и три апельсина. Мы также храним сливы, но информация о наших запасах неполная, и мы не знаем, сколько (если таковые имеются) слив есть в наличии. Используя значение NULL, мы получим таблицу инвентаризации, показанную в таблице ниже.
Инвентарь фруктовых лавок
InventoryID | Item | Количество |
1 | Яблоки | 10 |
2 | Апельсины | 3 |
3 | Сливы | NULL |
Было бы неправильно указывать количество 0 для записи слив, потому что это означало бы, что в инвентаре нет слив. Напротив, у нас может быть немного слив, но мы просто не уверены.
NULL или НЕ NULL?
Таблица может быть спроектирована для разрешения значений NULL или нет. Вот пример SQL, который создает таблицу инвентаризации, которая допускает некоторые значения NULL:
Хотя допустимое значение NULL вполне приемлемо, значения NULL могут вызвать проблемы, поскольку любое сравнение значений, в которых значение равно NULL, всегда приводит к NULL.
Чтобы проверить, содержит ли ваша таблица значения NULL, используйте оператор IS NULL или IS NOT NULL. Вот пример IS NULL:
Учитывая наш пример здесь, это вернет:
3 | Сливы |
Работает на NULL
Работа со значениями NULL часто приводит к результатам NULL, в зависимости от операции SQL. Например, предполагая, что A НЕДЕЙСТВИТЕЛЕН:
Арифметические операторы
Операторы сравнения
Это всего лишь несколько примеров операторов, которые всегда возвращают NULL, если один из операндов равен NULL. Существуют гораздо более сложные запросы, и все они усложняются значениями NULL. Главная идея заключается в том, что, если вы разрешите значения NULL в своей базе данных, поймите последствия и спланируйте их.
Заметка про NULL
Основные положения
Для удобства сделаем процедуру, печатающую состояние булевого параметра:
и включим опцию печати сообщений на консоль:
Привычные операторы сравнения пасуют перед NULLом:
Сравнение с NULLом
Соответственно, IS NOT NULL действует наоборот: вернёт истину, если значение операнда отлично от NULLа и ложь, если он является NULLом:
DECODE идёт против системы:
Пример с составными индексами находится в параграфе про индексы.
Логические операции и NULL
В большинстве случаев неизвестный результат обрабатывается как ЛОЖЬ :
Отрицание неизвестности даёт неизвестность:
Операторы IN и NOT IN
Для начала сделаем несколько предварительных действий. Для тестов создадим таблицу T с одним числовым столбцом A и четырьмя строками: 1, 2, 3 и NULL
Включим трассировку запроса (для этого надо обладать ролью PLUSTRACE ).
В листингах от трассировки оставлена только часть filter, чтобы показать, во что разворачиваются указанные в запросе условия.
Предварительные действия закончены, давайте теперь поработаем с операторами. Попробуем выбрать все записи, которые входят в набор (1, 2, NULL) :
Попробуем теперь с NOT IN :
Вообще ни одной записи! Давайте разберёмся, почему тройка не попала в результаты запроса. Посчитаем вручную фильтр, который применила СУБД, для случая A=3 :
Из-за особенностей трёхзначной логики NOT IN вообще не дружит с NULLами: как только NULL попал в условия отбора, данных не ждите.
NULL и пустая строка
Здесь Oracle отходит от стандарта ANSI SQL и провозглашает эквивалентность NULLа и пустой строки. Это, пожалуй, одна из наиболее спорных фич, которая время от времени рождает многостраничные обсуждения с переходом на личности, поливанием друг друга фекалиями и прочими непременными атрибутами жёстких споров. Судя по документации, Oracle и сам бы не прочь изменить эту ситуацию (там сказано, что хоть сейчас пустая строка и обрабатывается как NULL, в будущих релизах это может измениться), но на сегодняшний день под эту СУБД написано такое колоссальное количество кода, что взять и поменять поведение системы вряд ли реально. Тем более, говорить об этом они начали как минимум с седьмой версии СУБД (1992-1996 годы), а сейчас уже двенадцатая на подходе.
NULL и пустая строка эквивалентны:
непременный атрибут жёсткого спора:
Длина пустой строки не определена:
Сравнение с пустой строкой невозможно:
Критики подхода, предлагаемого Ораклом, говорят о том, что пустая строка не обязательно обозначает неизвестность. Например, менеджер по продажам заполняет карточку клиента. Он может указать его контактный телефон (555-123456), может указать, что он неизвестен (NULL), а может и указать, что контактный телефон отсутствует (пустая строка). С оракловым способом хранения пустых строк реализовать последний вариант будет проблемно. С точки зрения семантики довод правильный, но у меня на него всегда возникает вопрос, полного ответа на который я так и не получил: как менеджер введёт в поле «телефон» пустую строку и как он в дальнейшем отличит его от NULLа? Варианты, конечно, есть, но всё-таки…
Вообще-то, если говорить про PL/SQL, то где-то глубоко внутри его движка пустая строка и NULL различаются. Один из способов увидеть это связан с тем, что ассоциативные коллекции позволяют сохранить элемент с индексом » (пустая строка), но не позволяют сохранить элемент с индексом NULL:
Использовать такие финты ушами на практике не стоит. Во избежание проблем лучше усвоить правило из доки: пустая строка и NULL в оракле неразличимы.
Математика NULLа
Этот маленький абзац писался пятничным вечером под пиво, на фоне пятничного РЕН-ТВшного фильма. Переписывать его лень, уж извините.
Очевидно, что мы ничем не сможем помочь Коле: неизвестное количество любовников Маши до замужества сводит все расчёты к одному значению — неизвестно. Oracle, хоть и назвался оракулом, в этом вопросе уходит не дальше, чем участники битвы экстрасенсов: он даёт очевидные ответы только на очевидные вопросы. Хотя, надо признать, что Oracle гораздо честнее: в случае с Колей он не будет заниматься психоанализом и сразу скажет: «я не знаю»:
С конкатенацией дела обстоят по другому: вы можете добавить NULL к строке и это её не изменит. Такая вот политика двойных стандартов.
NULL и агрегатные функции
Таблица с данными. Используется ниже много раз:
Пустые значения игнорируются агрегатами:
Набор данных только из NULLов:
Пустой набор данных:
NULL в OLAP
Удобная фишка sqlplus: при выводе данных заменяет NULL на указанную строку:
Проверяем дуализм NULLа в многомерном кубе:
Приходят СМС с содержанием nullnullnull — что это значит?
Всем нам приходят СМС-сообщения — от знакомых, друзей, родных. Некоторые полезны, другие нет. Иногда мы получаем СМС рекламного характера от оператора, предлагаются новые услуги, акции..
Но есть СМС, которые непонятны и одно из таких — СМС, содержанием которого является nullnullnull или null null null — нет никакой подсказки что это за SMS, а в интернете информации как кот наплакал.
Данное сообщение часто приходит именно с коротких номеров. Например 1453, 1307, 1895 и другие. Оператор тоже может быть разный, но часто это МТС.
Номер СМС | Описание |
---|---|
2317 | Предположительно МТС-ИНФО (уточнить у оператора). Вроде как подключается всем абонентам. Также телефон может отправлять смс на этот номер. Деньги снимать не должны, но всякое бывает. Чтобы исключить любые писание — звоним оператору и включаем функцию Запрет контента. Один юзер звонил оператору и ему ответили, что номер 2317 используется для передачи служебной информации, а также для обновления приложений и меню сим-карты. |
4153 | Информация не найдена. Возможно это в некотором смысле коллега первого номера 2317. |
1453 и 1307 | Скорее всего тоже MTS Info. |
Первое что мне пришло на ум — содержание в виде nullnullnull сообщает об неудаче при выполнении операции, функции, обработке. То есть например вы заказали услугу. Но она не была предоставлена из-за ошибки и услуга вернула ответ nullnullnull. Но это только мои мысли, предположение.
Удивительно, но сообщение может прийти даже ВКонтакте — о содержании ничего не сказано, но вот отправитель — null null.. похоже на мистику:
А вот и пример того самого сообщения nullnullnull на телефоне:
Что делать? Мои мысли и советы
Вот такие у меня мыслишки:
Внешний вид антивирусов Доктор Веб и Касперский
NULL (SQL)
NULL в Системах управления базами данных (СУБД) — специальное значение (псевдозначение), которое может быть записано в поле таблицы базы данных (БД). NULL соответствует понятию «пустое поле», то есть «поле, не содержащее никакого значения». Введено для того, чтобы различать в полях БД пустые (визуально не отображаемые) значения (например, строку нулевой длины) и отсутствующие значения (когда в поле не записано вообще никакого значения, даже пустого).
NULL означает отсутствие, неизвестность информации. Значение NULL не является значением в полном смысле слова: по определению оно означает отсутствие значения и не принадлежит ни одному типу данных. Поэтому NULL не равно ни логическому значению FALSE, ни пустой строке, ни нулю. При сравнении NULL с любым значением будет получен результат NULL, а не FALSE и не 0. Более того, NULL не равно NULL!
Содержание
Необходимость NULL в реляционных БД
Использование NULL в БД
В БД, поддерживающих понятие NULL, для поля таблицы при описании определяется, может ли оно быть пустым. Если да, то в это поле можно не записывать никакого значения, и это поле будет иметь значение NULL. Также можно и явно записать в такое поле значение NULL.
Как правило, СУБД не разрешает значение NULL для полей, являющихся частью первичного ключа таблицы. В полях внешних ключей, напротив, NULL допускается. Наличие NULL в поле внешнего ключа может трактоваться как признак отсутствия связанной записи, и для такого внешнего ключа не требуется исполнение правил ссылочной целостности, обязательных для любого другого значения внешнего ключа.
Операции с NULL
Поскольку NULL не является, в общем смысле, значением, использование его в арифметических, строковых, логических и других операциях, строго говоря, некорректно. Тем не менее, большинство СУБД поддерживают такие операции, но вводят для них специальные правила:
Кроме того, могут существовать специальные системные функции для удобного преобразования NULL к определённым значениям, например, в Oracle имеется системная функция NVL, которая возвращает значение своего параметра, если он не NULL, или значение по умолчанию, если операнд — NULL. В стандарте SQL-92 определены две функции: NULLIF и COALESCE, поэтому их использование является более предпочтительным (если конкретная СУБД их реализует).
Долг по МФО передан в null, что это значит?
Здравствуйте.Был долг в мфо.Долгое время не платила.Появились средства залезла в личн.кабинет оплатить долг а там написано у вас нет действующего займа.А вверху такая срочка Право требования по Вашему займу передано в null. Более подробное уведомление Вы можете получить по ссылке. Все вопросы, касающиеся Вашей задолженности, Вы можете уточнить по телефонам: null, по почте null null и в любом офисе Быстроденьги.
Что это такое null?ссылка не открывается.спасибо
Сложно сказать, что это за ссылка. Но вас должны были уведомить. Согласно ст. 385 ГК РФ:
1. Уведомление должника о переходе права имеет для него силу независимо от того, первоначальным или новым кредитором оно направлено.
Должник вправе не исполнять обязательство новому кредитору до предоставления ему доказательств перехода права к этому кредитору, за исключением случаев, если уведомление о переходе права получено от первоначального кредитора.
2. Если должник получил уведомление об одном или о нескольких последующих переходах права, должник считается исполнившим обязательство надлежащему кредитору при исполнении обязательства в соответствии с уведомлением о последнем из этих переходов права.
3. Кредитор, уступивший требование другому лицу, обязан передать ему документы, удостоверяющие право (требование), и сообщить сведения, имеющие значение для осуществления этого права (требования).
Если на вас подадут в суд, в суде заявляйте ходатайство о снижении неустойки, на основании ст. 333 ГК РФ:
Если подлежащая уплате неустойка явно несоразмерна последствиям нарушения обязательства, суд вправе уменьшить неустойку.