8 ответов
Лучший ответ
переменные не могут быть
Если должен быть преобразован в , то именно преобразователь решает, устанавливать ли , генерировать исключение или устанавливать другое значение (например, ). Попробуйте подключить свой конвертер.
37
Bozho
29 Сен 2010 в 10:10
Я думаю, вы спрашиваете о таком коде.
5
Dead Programmer
29 Сен 2010 в 11:05
Я думаю, вы можете инициализировать переменные такими значениями, как , потому что, если переменные типа не инициализированы, их нельзя использовать. Если вы хотите проверить, не соответствует ли оно тому значению, которое вам нужно, вы можете проверить, равно ли оно .
5
mergenchik
11 Окт 2015 в 09:15
Если ваша переменная int объявлена как переменная уровня класса (переменная экземпляра), ей будет присвоено значение по умолчанию 0. Но это не указывает, было ли значение, отправленное от клиента, 0 или пустым. может быть, у вас может быть метод установки, который можно было бы вызвать для инициализации / установки значения, отправленного клиентом. тогда вы можете определить значение вашего индикатора, может быть какое-то отрицательное значение для обозначения нуля.
1
Siri
29 Сен 2010 в 10:54
1
Wim Ombelets
8 Авг 2016 в 14:02
Возможно, браузер возвращает строковое представление некоторого целочисленного значения? На самом деле int не может быть нулевым. Возможно, вы можете проверить значение null, если значение не равно нулю, а затем преобразовать представление String в int.
Andriy Sholokh
29 Сен 2010 в 10:13
Int не может быть нулевым. Если вы не присваиваете какое-либо значение для int, значение по умолчанию будет 0. Если вы хотите проверить значение null, сделайте int как Integer в объявлении. Тогда объект Integer может быть нулевым. Итак, вы можете проверить, где он равен нулю или нет. Даже при проверке bean-компонента javax вы не сможете получить ошибку для аннотации @NotNull, пока переменная не будет объявлена как Integer.
chaitanya
8 Авг 2016 в 09:27
Целое число не может быть нулевым, но есть действительно простой способ сделать то, что вы хотите. Используйте оператор if-then, в котором вы проверяете целочисленное значение на все возможные значения.
Примере:
Отказ от ответственности: я предполагаю, что Java не устанавливает автоматически значения чисел в 0, если не видит значения.
-2
Ahmed Abuamra
26 Янв 2021 в 08:27
Тестирование функции для проверки простоты числа
Для проверки работы функции напишем код программы в main:
C
int main()
{
// в данной переменной будем хранить число, которое необходимо проверить на простоту
int n;
// вывод текста в консоль
printf(«Input a number: «);
// читаем число n
scanf_s(«%d», &n);
// выводим информацию о том, простое ли число n: 1 — да, 0 — нет
printf(«Is prime: %d\n», isPrime(n));
}
1 |
intmain() { // в данной переменной будем хранить число, которое необходимо проверить на простоту intn; // вывод текста в консоль printf(«Input a number: «); // читаем число n scanf_s(«%d»,&n); // выводим информацию о том, простое ли число n: 1 — да, 0 — нет printf(«Is prime: %d\n»,isPrime(n)); } |
Также не забудем включить в программу необходимый заголовочный файл для работы функций ввода-вывода данных (scanf и printf):
C
#include <stdio.h>
1 | #include <stdio.h> |
Запустим программу и убедимся, что алгоритм работает корректно.
Единица в выводе (Is prime: 1) означает, что число – простое. Ноль говорил бы об обратном.
Подстановочные знаки
Подстановочный знак совпадает с любой последовательностью из нуля или более символов. Ниже приведена измененная версия предыдущего запроса, в которой используется шаблон, содержащий знак процента.
Оператор указывает SQL, что необходимо сравнивать содержимое столбца с шаблоном «Smith% Corp.». Этому шаблону соответствуют все перечисленные ниже имена.
Smith Corp.
Smithsen Corp.
Smithson Corp.
Smithsonian Corp.
А вот эти имена данному шаблону не соответствуют.
SmithCorp
Smithson Inc.
Подстановочный знак (символ подчеркивания) совпадает с любым отдельным символом. Например, если вы уверены, что название компании либо «Smithson», либо «Smithsen», то можете воспользоваться следующим запросом.
В таком случае шаблону будет соответствовать любое из представленных ниже имен.
Smithson Corp.
Smithsen Corp.
Smithsun Corp.
А вот ни одно из следующих ему соответствовать не будет.
Smithsoon Corp.
Smithsn Corp.
Подстановочные знаки можно помещать в любое место строки шаблона, и в одной строке может содержаться несколько подстановочных знаков. Следующий запрос допускает как написание «Smithson» и «Smithsen», так и любое другое окончание названия компании, включая «Corp.», «Inc.» или какое-то другое.
С помощью формы можно находить строки, которые не соответствуют шаблону. Проверку можно применять только к столбцам, имеющим строковый тип данных. Если в столбце содержится значение , то результатом проверки будет .
Вероятно, вы уже встречались с проверкой на соответствие шаблону в операционных системах, имеющих интерфейс командной строки (таких, как Unix). Обычно в этих системах звездочка () используется для тех же целей, что и символ процента () в SQL, а вопросительный знак () соответствует символу подчеркивания () в SQL, но в целом возможности работы с шаблонами строк в них такие же.
Разыменование полей в запросе
Разыменование полей в запросе — это возможность обращаться через точку к реквизиту ссылки.
Например, есть документ Продажа услуг, у которого есть реквизит Покупатель типа справочник контрагенты. Тогда в запросе через точку от реквизиту Покупатель можно обращаться к реквизитам контрагента:
ВЫБРАТЬ
ПродажаУслуг.Покупатель КАК Покупатель,
ПродажаУслуг.Покупатель.Наименование КАК ПокупательНаименование,
ПродажаУслуг.Покупатель.Код КАК ПокупательКод
ИЗ
Документ.ПродажаУслуг КАК ПродажаУслуг
1 |
ВЫБРАТЬ ПродажаУслуг.ПокупательКАК Покупатель, ПродажаУслуг.Покупатель.НаименованиеКАК ПокупательНаименование,
ПродажаУслуг.Покупатель.КодКАК ПокупательКод Документ.ПродажаУслугКАК ПродажаУслуг |
При этом будет выполнено неявное левое соединение с основной таблицей справочника Контрагенты. То есть запрос выше аналогичен такому запросу:
ВЫБРАТЬ
ПродажаУслуг.Покупатель КАК Покупатель,
Контрагенты.Наименование КАК Наименование,
Контрагенты.Код КАК Код
ИЗ
Документ.ПродажаУслуг КАК ПродажаУслуг
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты
ПО ПродажаУслуг.Покупатель = Контрагенты.Ссылка
1 |
ВЫБРАТЬ ПродажаУслуг.ПокупательКАК Покупатель, Контрагенты.НаименованиеКАК Наименование,
Контрагенты.КодКАК Код Документ.ПродажаУслугКАК ПродажаУслуг ЛЕВОЕСОЕДИНЕНИЕСправочник.КонтрагентыКАК Контрагенты ПО ПродажаУслуг.Покупатель=Контрагенты.Ссылка |
При этом если в документе не будет заполнен покупатель, то в полях ПокупательНаименование и ПокупательКод будет NULL.
Значения NULL
Использование значений в запросах может привести к »очевидным» предположениям, которые истинны только на первый взгляд, но на самом деле таковыми не являются. Например, можно предположить, что каждая строка из таблицы будет содержаться в результатах только одного из двух следующих запросов.
Вывести список служащих, превысивших плановый объем продаж.
Вывести список служащих, не выполнивших план.
Однако результаты этих запросов состоят из семи и двух строк соответственно, что дает в сумме девять строк, в то время как в таблице находится десять строк. Строка для Тома Снайдера (Tom Snyder) содержит значение в столбце , поскольку ему еще не был назначен плановый объем продаж. Эта строка не вошла ни в один запрос.
Как показывает приведенный пример, при определении условия отбора необходимо помнить об обработке значений NULL. В трехзначной логике, принятой в SQL, условие отбора может иметь значения , или . А в результаты запроса попадают только те игроки, для которых условие отбора равно . Мы еще встретимся с позже в этой статье.
4 ответа
Лучший ответ
Используйте
— это просто реализация необязательного шаблона. Полезными методами являются также , который устанавливает значение по умолчанию в случае, если был ,
3
xenteros
25 Июл 2017 в 07:44
Вы не должны использовать в таком случае
Как указано в Стюарт Маркс в Необязательно — Мать всех велосипедов:
Это создает бесполезные накладные расходы без какого-либо улучшения читаемости кода и удобства обслуживания. Таким образом, вы не должны заключать свой параметр в необязательный.
И
См. Также Почему необязательный параметр Java 8 не должен использоваться в аргументах.
8
Community
23 Май 2017 в 12:02
Вы должны четко понимать, чего вы ожидаете от своего метода. Возможности:
- Вы хотите, чтобы он продолжал работать, как раньше, и обрабатывать случай, когда клиент предоставляет нулевое значение
- Вы хотите изменить метод, чтобы он принимал в качестве параметра. Способ «без нулей» состоит в том, чтобы сделать это и просто не учитывать вызывающих абонентов, которые предоставляют null — если они получают исключение NullPointerException, это их собственная ошибка, потому что они нарушили правила.
Вам не нужно работать с потоками или лямбдами для работы с Optional (хотя, конечно, вы можете).
Вы можете просто написать:
Посмотрите на другие методы в JavaDoc, чтобы узнать, как еще его можно использовать.
Если вы не хотите изменять подпись вашего метода, вы можете использовать , чтобы превратить в :
Однако я сомневаюсь в ценности этого здесь. Если ваш API принимает значения NULL, то обработка его с помощью «за кулисами» не дает преимущества.
Я считаю, что лучше всего использовать как часть вашего API. Если параметр является необязательным, объявите его как вместо обработки null (или, лучше, используйте перегрузку метода, чтобы им вообще ничего не передавать). Если возвращаемое значение не может быть установлено, сделайте возвращаемый тип , а не возвращайте значение null.
-1
slim
14 Ноя 2016 в 12:02
-2
Hulk
14 Ноя 2016 в 13:35
Хеш-функции в целом
Основная идея хеш-функций состоит в том, чтобы уменьшить пространство , то есть функции не инъективны , поскольку они отображаются из большей области в меньшую.
Таким образом, они производят столкновения . То есть существуют разные элементы и , которые сопоставляются одному и тому же хеш-значению:
Таким образом, вы теряете информацию о данном аргументе .
Однако, чтобы ответить на вопрос о том, содержатся ли все значения, вам нужно сохранить всю информацию (или, по крайней мере, все недубликаты). Это, очевидно, невозможно практически для всех практических хэш-функций.
Возможные хэш-функции будут identity :
Но это не уменьшает пространство, не практично.
Естественной идеей было бы вычислить значения хеш-функции отдельных элементов, а затем объединить их, как
Но это опять-таки не уменьшает пространство, значения хэш-функции до тех пор, пока сообщение, не практично.
Другая возможность — удалить все дубликаты , поэтому при заданных значениях мы сохраняем только . Но это, в большинстве случаев, лишь незначительно уменьшает пространство, опять же не практично.
Но независимо от того, что вы делаете, вы не можете уменьшить количество недубликатов . В противном случае вы не сможете ответить на вопрос для некоторых значений. Например, если мы используем , но сохраняем только , мы не сможем ответить «было ли содержаться» .
Криптографические хеш-функции
Если вы говорите о криптографических хеш-функциях , ответ будет нет .
У них должно быть три свойства (Википедия):
- Сопротивление перед изображением — учитывая , его должно быть трудно найти
- Второе сопротивление перед изображением — учитывая , его должно быть трудно найти
- Сопротивление столкновению — Должно быть трудно найти
Неофициально у вас есть особенно:
Если бы у вас теперь было такое хеш-значение, вы могли бы легко восстановить его, спросив, содержатся ли некоторые значения. Используя это, вы можете легко создавать коллизии и тому подобное.
Однако детали будут зависеть от конкретного алгоритма хеширования.
Для примера с игрушкой давайте используем предыдущий алгоритм, который просто удаляет все дубликаты:
В этом случае мы находим сообщения типа
Что все отображаются на одно и то же хеш-значение.
Больше случайных хэшей
Если вам важно, как выглядит хеш, вы можете воспользоваться выводом из вышеприведенного и выполнить идеальный хеш на нем, чтобы отобразить его либо на хеш той же длины, либо на более длинный хеш. Одним из тривиальных примеров такой карты будет увеличение результирующего хеша на случайно выбранное, но детерминированное значение (т
Е. Оно одинаково для каждого хеша, который мы конвертируем) — вы также можете сделать это для каждого байта (с циклическим переносом), если хотите (например, byte0 = (byte0 + 5)% 255, byte1 = (byte1 + 18)% 255)
Одним из тривиальных примеров такой карты будет увеличение результирующего хеша на случайно выбранное, но детерминированное значение (т. Е. Оно одинаково для каждого хеша, который мы конвертируем) — вы также можете сделать это для каждого байта (с циклическим переносом), если хотите (например, byte0 = (byte0 + 5)% 255, byte1 = (byte1 + 18)% 255).
Чтобы определить, появляется ли элемент, простейшим подходом было бы отменить вышеуказанную операцию (вычесть вместо сложения), а затем просто проверить, установлен ли соответствующий бит. В зависимости от того, что вы сделали, также может быть возможно преобразовать только один байт.
Составные условия отбора (AND, OR и NOT)
Простые условия отбора, описанные в предыдущих разделах, после применения к некоторой строке возвращают значения , или . С помощью правил логики эти простые условия можно объединять в более сложные, как изображено на рис. 11
Обратите внимание на то, что условия отбора, объединяемые с помощью операторов , и , сами могут быть составными
Рис. 11. Синтаксическая диаграмма предложения WHERE
Оператор OR используется для объединения двух условий отбора, из которых или одно, или другое (или оба) должно быть истинным.
Найти служащих, у которых фактический объем продаж меньше планового или меньше $300000.
Для объединения двух условий отбора, оба из которых должны быть истинными, следует использовать оператор .
Найти служащих, у которых фактический объем продаж меньше планового и меньше $300000.
И наконец, можно использовать оператор NOT, чтобы выбрать строки, для которых условие отбора ложно.
Найти служащих, у которых фактический объем продаж меньше планового, но не меньше $150000.
С помощью логических операторов , , и круглых скобок можно создавать очень сложные условия отбора, как в следующем примере.
Найти всех служащих, которые: (а) работают в Денвере, Нью-Йорке или Чикаго; или (б) не имеют менеджера и были приняты на работу после июня 2006 года; или (в) у которых продажи превысили плановый объем, но не превысили $600000.
Лично для меня остается загадкой, зачем может понадобиться такой список имен, однако приведенный пример является иллюстрацией довольно сложного запроса.
Как и в случае с простыми условиями отбора, значения влияют на интерпретацию составных условий отбора, вследствие чего результаты последних становятся не столь очевидными. В частности, результатом операции является значение , а не , как можно было ожидать. Табл. 1-3 являются таблицами истинности для операторов , и соответственно в случае тернарной логики (со значениями ).
Таблица 1. Таблица истинности оператора and
AND |
TRUE |
FALSE |
NULL |
TRUE |
TRUE |
FALSE |
NULL |
FALSE |
FALSE |
FALSE |
FALSE |
NULL |
NULL |
FALSE |
NULL |
Таблица 2. Таблица истинности оператора OR
OR |
TRUE |
FALSE |
NULL |
TRUE |
TRUE |
TRUE |
TRUE |
FALSE |
TRUE |
FALSE |
NULL |
NULL |
TRUE |
NULL |
NULL |
Таблица 3. Таблица истинности оператора NOT
NOT |
TRUE |
FALSE |
NULL |
FALSE |
TRUE |
NULL |
В соответствии со стандартом ANSI/ISO, если с помощью операторов , и объединяется более двух условий отбора, то оператор имеет наивысший приоритет, за ним следует и только потом . Однако чтобы гарантировать переносимость, всегда следует использовать круглые скобки; это позволит устранить все возможные неоднозначности.
В стандарте SQL2 (известном также как SQL-92 и SQL: 1992) появилось еще одно логическое условие отбора — проверка . На рис. 12 изображена синтаксическая диаграмма этой проверки. Оператор проверяет значение результата логического выражения.
Рис. 12. Синтаксическая диаграмма оператора IS
Например, проверку
можно использовать, чтобы отыскать строки, в которых нельзя выполнить сравнение из-за того, что либо столбец , либо столбец имеет значение . Подобным образом проверка
позволяет выбрать строки, в которых значение столбца если и превышает значение столбца , то незначительно. Как показывает данный пример, на самом деле проверка не привносит в SQL ничего нового, поскольку ее можно легко переписать в следующем виде.
Хотя проверка IS внесена в стандарт SQL с 1992 года, ее поддерживает очень небольшое количество SQL-продуктов. Так что для обеспечения максимальной переносимости следует избегать подобных проверок и записывать выражения только с помощью операторов , и . Однако избежать проверки удается не всегда.
Битовые массивы
Если вам все равно, как выглядит полученный хэш, я бы порекомендовал использовать битовый массив.
- Возьмите диапазон всех возможных значений
- Сопоставьте это с диапазоном целых чисел, начиная с 0
- Пусть каждый бит в нашем хэше указывает, появляется ли это значение на входе
Это потребует 1 бит для каждого возможного значения (которое может быть много бит для больших диапазонов).
Примечание: это представление является оптимальным с точки зрения количества используемых битов, при условии, что нет ограничения на количество элементов, которые вы можете иметь (более 1 от каждого возможного значения) — если бы можно было использовать любой меньше битов, у вас будет алгоритм, который способен обеспечить гарантированное сжатие любых данных, что невозможно с помощью принцип голубиных отверстий.
Битые ссылки в запросе
В заключении стоит отметить, что два значения NULL в запросе не будут равны друг другу. Сравнение с NULL в запросе всегда возвращает Ложь. NULL может быть получен при обращении к реквизитам группы справочника, у которых в настройках указано, что они используются только для элементов.
Также при обращении к реквизитам битой ссылки в запросе будет получен NULL. Битая ссылка — это ссылка, которой не соответствует ни один объект базы данных. Такая ссылка может быть получена, если в документе был заполнен покупатель, а потом этот покупатель был удален из базы данных. Следующий запрос позволяет найти все битые ссылки на покупателя в документе Продажа услуг:
ВЫБРАТЬ
ПродажаУслуг.Номер КАК Номер,
ПродажаУслуг.Покупатель КАК Покупатель
ИЗ
Документ.ПродажаУслуг КАК ПродажаУслуг
ГДЕ
НЕ ПродажаУслуг.Покупатель = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
И ПродажаУслуг.Покупатель.Код ЕСТЬ NULL
1 |
ВЫБРАТЬ ПродажаУслуг.НомерКАК Номер,
ПродажаУслуг.ПокупательКАК Покупатель Документ.ПродажаУслугКАК ПродажаУслуг НЕ ПродажаУслуг.Покупатель=ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка) И ПродажаУслуг.Покупатель.Код ЕСТЬ NULL |
В условии мы проверяем, что покупатель в реквизите заполнен, но при этом обращении к его реквизитам возвращает NULL.
Подписывайтесь на группу , где я публикую ссылки на новые статьи с данного сайта, а также интересные материалы с других ресурсов по программированию в 1С
Понимать использование пустых значений, чтобы избежать проблем с базой данных
Пользователи, плохо знакомые с миром баз данных, часто путаются с особым значением, относящимся к полю – значением 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:
SQL> CREATE TABLE INVENTORY ( InventoryID INT NOT NULL, Элемент VARCHAR (20) NOT NULL, Количество INT );
Таблица инвентаризации здесь не допускает значения NULL для столбцов InventoryID и Item , но разрешает их для столбца Количество .
Хотя допустимое значение NULL вполне приемлемо, значения NULL могут вызвать проблемы, поскольку любое сравнение значений, в которых значение равно NULL, всегда приводит к NULL.
Чтобы проверить, содержит ли ваша таблица значения NULL, используйте оператор IS NULL или IS NOT NULL. Вот пример IS NULL:
SQL> ВЫБРАТЬ INVENTORYID, ПУНКТ, КОЛИЧЕСТВО ИЗ ИНВЕНТАРЯ ГДЕ КОЛИЧЕСТВО НЕ НУЛЬ;;
Учитывая наш пример здесь, это вернет:
3 | Сливы |
Работает на NULL
Работа со значениями NULL часто приводит к результатам NULL, в зависимости от операции SQL. Например, предполагая, что A НЕДЕЙСТВИТЕЛЕН:
Арифметические операторы
- A + B = NULL
- A – B = NULL
- A * B = NULL
- A/B = NULL
Операторы сравнения
- A = B = NULL
- A! = B = NULL
- A> B = NULL
- A!
Это всего лишь несколько примеров операторов, которые всегда возвращают NULL, если один из операндов равен NULL. Существуют гораздо более сложные запросы, и все они усложняются значениями NULL. Главная идея заключается в том, что, если вы разрешите значения NULL в своей базе данных, поймите последствия и спланируйте их.
Это NULL в двух словах!
Функция ЕСТЬNULL в запросе
Также есть функция ЕСТЬNULL, которая позволяет привести NULL к какому-либо значению. Функция принимает 2 параметра. Первый — само значение. Второй — то значение, которое будет использоваться, если первый параметр равен NULL.
Например, в следующем запросе:
ВЫБРАТЬ
ПродажаУслуг.Номер КАК Номер,
ПродажаУслуг.Покупатель КАК Покупатель,
ЕСТЬNULL(ПродажаУслуг.Покупатель.Код, «Поле равно NULL») КАК Код
ИЗ
Документ.ПродажаУслуг КАК ПродажаУслуг
1 |
ВЫБРАТЬ ПродажаУслуг.НомерКАК Номер, ПродажаУслуг.ПокупательКАК Покупатель,
ЕСТЬNULL(ПродажаУслуг.Покупатель.Код,»ПолеравноNULL»)КАК Код Документ.ПродажаУслугКАК ПродажаУслуг |
В поле Код будет код покупателя, если покупатель заполнен в документе:
И «Поле равно NULL», если покупатель не заполнен в документе:
ЕСТЬ NULL в запросе
С помощью оператора ЕСТЬ NULL можно проверить является ли значение NULL:
ВЫБРАТЬ
ПродажаУслуг.Номер КАК Номер,
ПродажаУслуг.Покупатель КАК Покупатель,
ПродажаУслуг.Покупатель.Наименование КАК ПокупательНаименование,
ПродажаУслуг.Покупатель.Код КАК ПокупательКод,
ВЫБОР
КОГДА ПродажаУслуг.Покупатель.Код ЕСТЬ NULL
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ КАК ЭтоNULL
ИЗ
Документ.ПродажаУслуг КАК ПродажаУслуг
1 |
ВЫБРАТЬ ПродажаУслуг.НомерКАК Номер, ПродажаУслуг.ПокупательКАК Покупатель, ПродажаУслуг.Покупатель.НаименованиеКАК ПокупательНаименование, ПродажаУслуг.Покупатель.КодКАК ПокупательКод, ВЫБОР КОГДАПродажаУслуг.Покупатель.Код ЕСТЬ NULL ТОГДАИСТИНА ИНАЧЕЛОЖЬ КОНЕЦ КАК ЭтоNULL Документ.ПродажаУслугКАК ПродажаУслуг |
Если покупатель в документе не заполнен, то запрос вернет следующий результат:
ЕСТЬ NULL можно использовать в условии:
ВЫБРАТЬ
ПродажаУслуг.Номер КАК Номер,
ПродажаУслуг.Покупатель КАК Покупатель
ИЗ
Документ.ПродажаУслуг КАК ПродажаУслуг
ГДЕ
ПродажаУслуг.Покупатель.Код ЕСТЬ NULL
1 |
ВЫБРАТЬ ПродажаУслуг.НомерКАК Номер,
ПродажаУслуг.ПокупательКАК Покупатель Документ.ПродажаУслугКАК ПродажаУслуг ПродажаУслуг.Покупатель.Код ЕСТЬ NULL |
Для проверки, что значение не равно NULL можно использовать ЕСТЬ НЕ NULL или НЕ ЕСТЬ NULL:
ВЫБРАТЬ
ПродажаУслуг.Номер КАК Номер,
ПродажаУслуг.Покупатель КАК Покупатель
ИЗ
Документ.ПродажаУслуг КАК ПродажаУслуг
ГДЕ
ПродажаУслуг.Покупатель.Код ЕСТЬ НЕ NULL
1 |
ВЫБРАТЬ ПродажаУслуг.НомерКАК Номер,
ПродажаУслуг.ПокупательКАК Покупатель Документ.ПродажаУслугКАК ПродажаУслуг ПродажаУслуг.Покупатель.Код ЕСТЬ НЕ NULL |
Выборка одной строки
Чаще всего используется сравнение, в котором определяется, равно ли значение столбца некоторой константе. Если этот столбец представляет собой первичный ключ, то запрос возвращает всего одну строку, как в следующем примере.
Узнать имя и лимит кредита клиента с идентификатором 2107.
Этот тип запросов лежит в основе выборки из баз данных на основе форм вебстраниц. Пользователь вводит в форму идентификатор клиента, и программа использует его при создании и выполнении запроса. После этого она отображает извлеченные данные в форме
Обратите внимание на то, что инструкции SQL, предназначенные для выбора конкретного клиента по идентификатору, как в предыдущем примере, и для выбора всех клиентов, удовлетворяющих определенным параметрам (например, с лимитом кредита более $25000), имеют абсолютно одинаковый формат