В Visual FoxPro имеется два оператора для проверки равенства: оператор Равно (=) и оператор Сравнение символьных строк (==). Оператор = сравнивает два значения, имеющих один и тот же тип данных, и применяется для сравнения следующих типов данных: Character, Numeric, Date, и Logical. Однако использование оператора = для сравнения символьных выражений может дать не тот результат, который вы ожидали.
Символьные выражения сравниваются посимвольно слева направо до тех пор, пока:- все символы одного выражения не сравнятся с символами другого,
- не будет достигнут конец выражения, стоящего справа от оператора =, если параметр команды SET EXACT установлен в значение OFF,
- не будет достигнут конец обоих выражений, если параметр команды SET EXACT установлен в значение ON.
Оператор == используется для точного сравнения символьных (character) и двоичных (binary) выражений. Два символьных или двоичных выражения считаются одинаковыми, если содержат одинаковую последовательность символов или битов по обе стороны оператора ==, включая пробелы и нулевые (0) биты. При использовании оператора == значение параметра в команде SET EXACT игнорируется. Более подробно об этом см. Операторы отношений.
В следующей таблице показано влияет на результат сравнения выбор оператора и значение параметра в команде SET EXACT.![]() |
---|
Знак подчеркивание обозначает пробел. |
Сравнение | = с SET EXACT OFF | = с SET EXACT ON | == с SET EXACT ON или OFF |
---|---|---|---|
"abc" = "abc" |
Равны |
Равны |
Равны |
"ab" = "abc" |
Не равны |
Не равны |
Не равны |
"abc" = "ab" |
Равны |
Не равны |
Не равны |
"abc" = "ab_" |
Не равны |
Не равны |
Не равны |
"ab" = "ab_" |
Не равны |
Равны |
Не равны |
"ab_" = "ab" |
Равны |
Равны |
Не равны |
"" = "ab" |
Не равны |
Не равны |
Не равны |
"ab" = "" |
Равны |
Не равны |
Не равны |
"__" = "" |
Равны |
Равны |
Не равны |
"" = "___" |
Не равны |
Равны |
Не равны |
TRIM("___") = "" |
Равны |
Равны |
Равны |
"" = TRIM("___") |
Равны |
Равны |
Равны |
В SQL-операторах, таких, например, как Команда SELECT - SQL, на результат применения оператора = может оказать влияние значение параметра в команде SET ANSI.