В Visual FoxPro имеется два оператора для проверки равенства: оператор Равно (=) и оператор Сравнение символьных строк (==). Оператор = сравнивает два значения, имеющих один и тот же тип данных, и применяется для сравнения следующих типов данных: Character, Numeric, Date, и Logical. Однако использование оператора = для сравнения символьных выражений может дать не тот результат, который вы ожидали.

Символьные выражения сравниваются посимвольно слева направо до тех пор, пока:

Оператор == используется для точного сравнения символьных (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.

См. также