Логические выражения в языке запросов
В языке запросов в операциях выбора и в условиях отборов используются логические выражения:
<Выражение> |
<Выражение> <Операция сравнения> <Выражение> |
<Выражение> [НЕ] В [ИЕРАРХИИ] (<Список значений>)
<Выражение> [НЕ] В [ИЕРАРХИИ] <Описание запроса> |
<Выражение> [НЕ] МЕЖДУ <Выражение> И <Выражение> |
<Выражение> ЕСТЬ [НЕ] NULL |
<Выражение> ССЫЛКА <Имя таблицы> |
<Выражение> [НЕ] ПОДОБНО <Литерал типа СТРОКА> [СПЕЦСИМВОЛ <Литерал типа СТРОКА>]
> | < | = | >= | <= | <>
<Выражение> [, <Выражение> [, ...] ]
Логическим выражением может быть:
• обычное <Выражение> языка запросов, если его результат имеет логический тип;
• <Операция сравнения> двух выражений языка запросов; выполняются в соответствии с правилами сравнения значений описанными на стр. 360;
• оператор проверки совпадения / не совпадения значения выражения с одним из перечисленных или со значениями, содержащимися в результате другого запроса;
• оператор проверки вхождения значения выражения в диапазон;
• оператор проверки значения выражения на NULL;
• оператор проверки ссылочного значения выражения на ссылку на определенную таблицу;
• оператор проверки строкового значения на подобие шаблону.
При сравнении значений используются правила сравнения значений, описанные на стр. 360.
Правила сравнения значений
Поскольку в языке запросов могут сравниваться значения разных типов, определены правила, по которым выполняется сравнение двух значений. Данные правила используются для:
• сравнения значений в операторах сравнения;
• определения максимального и минимального значений в агрегатных функциях МИНИМУМ и МАКСИМУМ;
• упорядочивания записей результата запроса в соответствии с порядком, заданным в предложении УПОРЯДОЧИТЬ ПО.
Если типы значений отличаются друг от друга, то отношения между значениями определяются на основании приоритета типов:
• тип NULL (самый низший);
• тип булево;
• тип число;
• тип дата;
• тип строка;
• ссылочные типы.
Отношения между различными ссылочными типами определяются на основе ссылочных номеров таблиц, соответствующих тому или иному типу.
Если типы данных совпадают, то производится сравнение значений по следующим правилам:
• у типа булево значение ИСТИНА больше значения ЛОЖЬ;
• у типа число обычные правила сравнения для чисел;
• у типа дата более ранние даты меньше более поздних;
• у типа строка сравнения производится в соответствии с установленными национальными особенностями базы данных;
• ссылочные типы сравниваются на основе своих значений (номера записи и т. п.).
Важно!
Любая операция сравнения двух значений, в которой участвует хотя бы одно значение NULL, дает результат, аналогичный значению ЛОЖЬ.
Оператор проверки совпадения значения с одним из перечисленных
Оператор В
позволяет проверить, совпадает ли значение выражения, указанного справа от него, с одним из значений, описанных слева. Если совпадает хотя бы с одним - результатом оператора будет ИСТИНА, иначе - ЛОЖЬ. Применение НЕ изменяет действие оператора на обратное. Сравнение значений производится по правилам, описанным на стр. 360.
Пример:
Выбрать
Справочник.Номенклатура.Наименование
Где
Справочник.Номенклатура.Родитель.Наименование В ("Бытовая техника", "Оргтехника")
Для справочников проверка может осуществляться и на принадлежность по иерархии. Результатом оператора В ИЕРАРХИИ будет ИСТИНА, если значение выражения слева является ссылкой на элемент справочника и входит во множество значений справа или иерархически принадлежит какой-нибудь группе, содержащейся в этом множестве.
Пример:
//В качестве параметра Группа в запрос передается ссылка
//на какую-либо группу справочника Номенклатура.
Выбрать
Справочник.Номенклатура.Наименование
Где
Справочник.Номенклатура.Ссылка В ИЕРАРХИИ (&Группа)
В качестве множества значений, на совпадение с которыми выполняется проверка, может фигурировать и результат запроса. В этом случае справа от оператора В необходимо указать описание запроса.
Пример:
Выбрать
Справочник.Номенклатура.Наименование
Где
Справочник.Номенклатура.Ссылка В ИЕРАРХИИ
(ВЫБРАТЬ
Справочник.Номенклатура.Ссылка
ГДЕ
Справочник.Номенклатура.Наименование = "Одежда" )
Оператор проверки вхождения значения в диапазон
Оператор МЕЖДУ позволяет проверить, входит ли значение выражения, указанного справа от него, в диапазон, указанный слева. Если входит - результатом оператора будет ИСТИНА, иначе -ЛОЖЬ Применение НЕ изменяет действие оператора на обратное. Сравнение значений производится по правилам, описанным на стр. 360.
Пример:
Выбрать
Справочник.Номенклатура.Наименование,
Справочник.Номенклатура.ЗакупочнаяЦена
Где
Справочник.Номенклатура.ЗакупочнаяЦена МЕЖДУ 100 И 1000
Оператор проверки значения на NULL
Оператор ЕСТЬ NULL позволяет проверить значение выражения слева от него на NULL. Если значение равно NULL результатом оператора будет ИСТИНА, иначе - ЛОЖЬ. Применение НЕ изменяет действие оператора на обратное.
Пример:
Выбрать
Справочник.Номенклатура.Наименование,
Справочник.Номенклатура.ЗакупочнаяЦена
Где
Справочник.Номенклатура.ЗакупочнаяЦена Есть NULL
Оператор проверки ссылочного значения
Оператор ССЫЛКА позволяет проверить, является ли значение выражения, указанного справа от него, ссылкой на таблицу, указанную слева Если да - результатом оператора будет ИСТИНА, иначе - ЛОЖЬ. Разыменование таблиц описано на стр. 345.
Пример:
ВЫБРАТЬ
Справочник.Номенклатура.Наименование,
Справочник.Номенклатура.ЕдиницаИзмерения
ГДЕ
Справочник.Номенклатура.ЕдиницаИзмерения ССЫЛКА Справочник.ЕдиницыИзмерения
Оператор проверки строки на подобие шаблону
Оператор ПОДОБНО позволяет сравнить значение выражения, указанного слева от него, со строкой шаблона, указанной справа. Значение выражения должно иметь тип строка. Если значение выражения удовлетворяет шаблону - результатом оператора будет ИСТИНА, иначе - ЛОЖЬ.
Следующие символы в строке шаблона являются служебными и имеют смысл, отличный от символа строки:
• % (процент): последовательность, содержащая любое количество произвольных символов
• _ (подчеркивание): один произвольный символ.
• [...] (в квадратных скобках один или несколько символов): любой одиночный символ из перечисленных внутри квадратных скобок. В перечислении могут встречаться диапазоны, например a-z, означающие произвольный символ, входящий в диапазон, включая концы диапазона.
• [^...] (в квадратных скобках значок отрицания, за которым следует один или несколько символов): любой одиночный символ, кроме тех, которые перечислены следом за значком отрицания.
Любой другой символ означает сам себя и не несет никакой дополнительной нагрузки.
Если в качестве самого себя необходимо записать один из перечисленных символов, то ему должен предшествовать <Спецсимвол>. Сам <Спецсимвол> (любой подходящий символ) определяется в этом же операторе после ключевого слова СПЕЦСИМВОЛ.
Например, шаблон "%АБВ[0-9][абвг]\_абв%" СПЕЦСИМВОЛ "\" означает подстроку, состоящую из последовательности символов:
буквы А, буквы Б; буквы В; одной цифры, одной из букв а, 6, в или г; символа подчеркивания; буквы а; буквы б; буквы в. Причем перед этой последовательностью может располагаться произвольный набор символов.
«««««««««« | 1С:Предприятие 8.0 | »»»»»»»»»» |