Правила сравнения значений
страницаПоскольку в языке запросов могут сравниваться значения разных типов, определены правила, по которым выполняется сравнение двух значений. Данные правила используются для:
- сравнения значений в операторах сравнения;
- определения максимального и минимального значений в агрегатных функциях МИНИМУМ и МАКСИМУМ;
- упорядочивания записей результата запроса в соответствии с порядком, заданным в предложении УПОРЯДОЧИТЬ ПО.
Если типы значений отличаются друг от друга, то отношения между значениями определяются на основании приоритета типов:
Отношения между различными ссылочными типами определяются на основе внутренних ссылочных номеров таблиц, соответствующих тому или иному типу.
Если типы данных совпадают, то производится сравнение значений по следующим правилам:
- у типа Булево значение ИСТИНА больше значения ЛОЖЬ;
- у типа ЧИСЛО обычные правила сравнения для чисел;
- у типа ДАТА более ранние даты меньше более поздних;
- у типа СТРОКА сравнения производится в соответствии с установленными национальными особенностями базы данных;
- ссылочные типы сравниваются на основе своих значений (номера записи и т. п.);
- для массивов выполняется последовательное сравнение элементов массива;
- для таблиц значений выполняется последовательное сравнение элементов таблиц;
- для объектов не примитивного типа, не ссылочных типов, не явлющихся массивом или таблицей значний:
- При упорядочивании сравнение выполняется по строковому представлению сравниваемых объектов.
- При сравнении с использованием операторов = и <>, выполняется проверка на то, что объект сравнивается сам с собой.
- При сравнении с использованием операторов <, <=, > и >= генерируется исключение "Попытка сравнения не сравниваемых значений". Например: если в группировке происходит упорядочивание по функции ВычислитьВыражениеСГруппировкойМассив ("Сумма(СуммаОборот)", "Контрагент")) то упорядочивание при формировании отчета всегда будет одинаковым – по содержимому полученных массивов.
- не допускается сравнение полей неограниченной длины (строки неограниченной длины, ХранилищеЗначения, поле ТИПЗНАЧЕНИЯ из таблицы планов видов характеристик).
Важно! Любая операция сравнения двух значений, в которой участвует хотя бы одно значение NULL, дает результат, аналогичный значению ЛОЖЬ.
см. также: Логические выражения