ГОСТ Р ИСО/МЭК 18000-7—2012
Здесь для каждой записи искомой таблицы каждый логический операнд оценивает значение
как «истинно» или «ложно», как это описано ниже. Булевские операторы преобразуют эти значения
в одно конечное «истинно» или «ложно» стандартным способом, и оператор CLEAR не влияет на бу
левское значение полного выражения.
Если конечное значение выражения — «истинно», то найденная в таблице запись включается
в таблицу результатов поиска «Query Results Table», как представлено ниже.
6.3.10.10.4 Логические операнды
Логический операнд определяет, каким образом каждая запись искомой таблицы проверяется
для включения в набор совпадения записей. Номер поля логического операнда определяет, какое поле
каждой записи должно быть проверено. Данные сравнения определяют значение строки, по которой
производится сравнение с содержимым таблицы. Оператор отношения определяет способ сравнения
содержания поля иданныхсравнения, двух подлежащих сравнению операндов отношения в операторе
отношения. Кроме того, первый байт данных сравнения влияет на метод сравнения. Если этот байт обо
значен знаком «*» по ИСО/МЭК 8859-1. то проводится сравнение по шаблону подстановки «wildcard», в
противном случае сравнение производится с полным совпадением.
6.3.10.10.5 Сравнение с полным совпадением
Если оператором отношения является «=». то сравнение с полным совпадением операндов от
ношения производится побайтово и должно дать точное совпадение. Если в двух операндах сравне
ния не совпадают байты в какой-либо позиции, значение логического операнда оценивается как «лож
но». Если один операнд отношения длиннее другого, то логический операнд оценивается как «ложно». В
ином случае логический операнд оценивается как «истинно».
Например, следующее выражение сравнения оценивается как «истинно»:
abc = abc.
Следующие выражения сравнения оцениваются как «ложно»:
abc < abc;
abdb < abce:
abc > abc;
abc! abc.
Если оператором отношения является «!». то сравнение с полным совпадением производится
также, как для оператора отношения «=», но с противоположным результатом. Любое сравнение, в ко
тором оператор «=» даст результат «истинно», с оператором «!» будет иметь результат «ложно».
Следующие сравнения оцениваются как «истинно»:
abc! abed;
abc! ABC;
abc! abd;
abc! ab.
Следующее сравнение оценивается как «ложно»:
abc! abc.
Если оператором отношения является «<» или «>», то сравнение с полным совпадением операн
дов отношения производится побайтово. как для оператора «=». до обнаружения первого несовпаде
ния. Если несовпадений нет. то логическому операнду присваивается значение «ложно». Несовпада
ющие байты сравниваются согласно оператору отношения. Если оператором отношения является «<» и
байтов в содержании поля меньше, чем байтов из данных сравнения, то логический операнд оцени
вается как «истинно». Если оператором отношения является «>» и байтов в содержании поля больше,
чем байтов из данных сравнения, то логический операнд принимает значение «истинно». Для опера
торов неравенства «<» или «>», если длина одного операнда отношения меньше длины другого опе
ранда. для более короткого операнда в целях сравнения добавляется дополнительный конечный байт с
меньшим значением, чем минимальное возможное значение байта.
Следует иметь в виду, что, поскольку данные сравнения ограничены 32 байтами, то значение
сравнения для полей длиннее 32 байтов оцениваются как «ложно» при операторе «=» и полном срав
нении и как «истинно» при операторе «!» и полном сравнении.
Так. следующие сравнения имеют значения «истинно»:
abb < abc;
aad < abc;
ab < abc;
abc < ad;
47